# HG changeset patch # User jbe # Date 1428367961 -7200 # Node ID 54e6104c70a6310bd4aafe3240ca88501fda2864 # Parent c4fd976d953770ee11523c4a1caa06ba9e89d655 Proper return values for drain functions diff -r c4fd976d9537 -r 54e6104c70a6 moonbridge_io.c --- a/moonbridge_io.c Tue Apr 07 02:52:24 2015 +0200 +++ b/moonbridge_io.c Tue Apr 07 02:52:41 2015 +0200 @@ -115,6 +115,9 @@ if (!drain) { luaL_addlstring(&luabuf, handle->readbuf, endcnt); luaL_pushresult(&luabuf); + } else { + luabufcnt += handle->readbufcnt; + lua_pushinteger(L, luabufcnt); } handle->readbufcnt -= endcnt; memmove(handle->readbuf, handle->readbuf + endcnt, handle->readbufcnt); @@ -140,7 +143,18 @@ luaL_addlstring(&luabuf, handle->readbuf, handle->readbufcnt); luaL_pushresult(&luabuf); } + luabufcnt += handle->readbufcnt; handle->readbufcnt = 0; + if (!drain) { + if (!luabufcnt && result == 0) { + lua_pushboolean(L, 0); + lua_pushliteral(L, "End of file"); + return 2; + } + } else { + if (!luabufcnt && result == 0) lua_pushboolean(L, 1); + else lua_pushboolean(L, luabufcnt); + } return 1; }