]> git.sesse.net Git - vlc/commitdiff
lua/net.c: revert [14707cbaca9fa] and fix properly
authorRafaël Carré <rafael.carre@gmail.com>
Mon, 10 May 2010 15:04:05 +0000 (17:04 +0200)
committerRafaël Carré <rafael.carre@gmail.com>
Mon, 10 May 2010 15:05:39 +0000 (17:05 +0200)
Always return 1 argument, but avoid pushing 0xffffffff bytes on the stack
Also fix vlclua_fd_read()

modules/misc/lua/libs/net.c

index b5227d2ca60c95609831f365e145b7c0317263cd..c23f4756b5f3716c5ed9dfc39595a4bbed8da5ad 100644 (file)
@@ -184,14 +184,9 @@ static int vlclua_net_recv( lua_State *L )
     int i_fd = luaL_checkint( L, 1 );
     size_t i_len = luaL_optint( L, 2, 1 );
     char psz_buffer[i_len];
-    i_len = recv( i_fd, psz_buffer, i_len, 0 );
-    if( i_len > 0 )
-    {
-        lua_pushlstring( L, psz_buffer, i_len );
-        return 1;
-    }
-    else
-        return 0;
+    ssize_t i_ret = recv( i_fd, psz_buffer, i_len, 0 );
+    lua_pushlstring( L, psz_buffer, (i_ret >= 0) ? i_ret : 0 );
+    return 1;
 }
 
 /*****************************************************************************
@@ -261,8 +256,8 @@ static int vlclua_fd_read( lua_State *L )
     int i_fd = luaL_checkint( L, 1 );
     size_t i_len = luaL_optint( L, 2, 1 );
     char psz_buffer[i_len];
-    i_len = read( i_fd, psz_buffer, i_len );
-    lua_pushlstring( L, psz_buffer, i_len );
+    ssize_t i_ret = read( i_fd, psz_buffer, i_len );
+    lua_pushlstring( L, psz_buffer, (i_ret >= 0) ? i_ret : 0 );
     return 1;
 }