summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2019-10-30 00:41:51 +0800
committerruki <[email protected]>2019-10-29 22:11:09 +0800
commit5f388f24e9c0b2f62101667490a2032306148a35 (patch)
tree8527647e2b1ec8d427088f278f0524bc53712831 /core/src
parent0ad553e46eb001448cf5acac7ba6d26a11e39eff (diff)
fix socket.recv
Diffstat (limited to 'core/src')
-rw-r--r--core/src/xmake/io/socket_recv.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/core/src/xmake/io/socket_recv.c b/core/src/xmake/io/socket_recv.c
index dce4da277..e1f48cf9b 100644
--- a/core/src/xmake/io/socket_recv.c
+++ b/core/src/xmake/io/socket_recv.c
@@ -34,7 +34,7 @@
* implementation
*/
-// real, data_or_errors = io.socket_recv(sock, size)
+// real, data, errors = io.socket_recv(sock, size, prev_data)
tb_int_t xm_io_socket_recv(lua_State* lua)
{
// check
@@ -44,6 +44,7 @@ tb_int_t xm_io_socket_recv(lua_State* lua)
if (!lua_isuserdata(lua, 1))
{
lua_pushnumber(lua, -1);
+ lua_pushnil(lua);
lua_pushliteral(lua, "invalid socket!");
return 2;
}
@@ -59,6 +60,7 @@ tb_int_t xm_io_socket_recv(lua_State* lua)
if (size < 0)
{
lua_pushnumber(lua, -1);
+ lua_pushnil(lua);
lua_pushfstring(lua, "invalid size(%ld)!", size);
return 2;
}
@@ -86,5 +88,10 @@ tb_int_t xm_io_socket_recv(lua_State* lua)
luaL_pushresult(&result);
return 2;
}
+ else if (prev_data && prev_size)
+ {
+ lua_pushlstring(lua, prev_data, prev_size);
+ return 2;
+ }
return 1;
}