]> git.sesse.net Git - vlc/commitdiff
Fix lua intf thread cancellation and cleanup properly in vlc.net.poll().
authorAntoine Cellerier <dionoea@videolan.org>
Sat, 6 Feb 2010 13:45:09 +0000 (14:45 +0100)
committerAntoine Cellerier <dionoea@videolan.org>
Sat, 6 Feb 2010 13:49:09 +0000 (14:49 +0100)
modules/misc/lua/intf.c
modules/misc/lua/libs/net.c

index 9c8c64b8fe757ca8986943e8b3681cf71b0a93f9..7a80ef4d67eebc2733e4a74a219f4bd8e42a74dd 100644 (file)
@@ -312,6 +312,8 @@ void Close_LuaIntf( vlc_object_t *p_this )
     intf_thread_t *p_intf = (intf_thread_t*)p_this;
     intf_sys_t *p_sys = p_intf->p_sys;
 
+    vlc_cancel( p_sys->thread );
+
     vlc_mutex_lock( &p_sys->lock );
     p_sys->exiting = true;
     vlc_cond_signal( &p_sys->wait );
index eb56a958426f72bfff7352d899361d7302575c86..68b875f7f7a4af2607501a9192d24da15a8ced2d 100644 (file)
@@ -194,6 +194,7 @@ static int vlclua_net_poll( lua_State *L )
         lua_pop( L, 1 );
     }
     struct pollfd *p_fds = malloc( i_fds * sizeof( struct pollfd ) );
+    vlc_cleanup_push( free, p_fds );
     lua_pushnil( L );
     int i = 0;
     while( lua_next( L, 1 ) )
@@ -212,8 +213,8 @@ static int vlclua_net_poll( lua_State *L )
         lua_pushinteger( L, p_fds[i].revents );
         lua_settable( L, 1 );
     }
-    free( p_fds );
     lua_pushinteger( L, i_ret );
+    vlc_cleanup_run();
     return 1;
 }