[vlc-devel] commit: Do not ResumeThread an invalid thread handle ( Rémi Denis-Courmont )

git version control git at videolan.org
Thu Jul 24 19:23:02 CEST 2008


vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Thu Jul 24 20:25:00 2008 +0300| [8e34f1cd2658337329befe2ed73ceaec2f6612e5]

Do not ResumeThread an invalid thread handle

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8e34f1cd2658337329befe2ed73ceaec2f6612e5
---

 src/misc/threads.c |   34 +++++++++++++++-------------------
 1 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/misc/threads.c b/src/misc/threads.c
index ed6dbc2..8b503b7 100644
--- a/src/misc/threads.c
+++ b/src/misc/threads.c
@@ -549,34 +549,30 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
     pthread_attr_destroy (&attr);
 
 #elif defined( WIN32 ) || defined( UNDER_CE )
-    {
-        /* When using the MSVCRT C library you have to use the _beginthreadex
-         * function instead of CreateThread, otherwise you'll end up with
-         * memory leaks and the signal functions not working (see Microsoft
-         * Knowledge Base, article 104641) */
+    /* When using the MSVCRT C library you have to use the _beginthreadex
+     * function instead of CreateThread, otherwise you'll end up with
+     * memory leaks and the signal functions not working (see Microsoft
+     * Knowledge Base, article 104641) */
 #if defined( UNDER_CE )
-        HANDLE hThread = CreateThread( NULL, 0, thread_entry,
-                                       (LPVOID)boot, CREATE_SUSPENDED,
-                                        NULL );
+    HANDLE hThread = CreateThread( NULL, 0, thread_entry,
+                                  (LPVOID)boot, CREATE_SUSPENDED, NULL );
 #else
-        HANDLE hThread = (HANDLE)(uintptr_t)
-            _beginthreadex( NULL, 0, thread_entry, boot,
-                            CREATE_SUSPENDED, NULL );
+    HANDLE hThread = (HANDLE)(uintptr_t)
+        _beginthreadex( NULL, 0, thread_entry, boot, CREATE_SUSPENDED, NULL );
 #endif
-        p_priv->thread_id = hThread;
-        ResumeThread(hThread);
-    }
-
-    i_ret = ( p_priv->thread_id ? 0 : errno );
-
-    if( !i_ret && i_priority )
+    if( hThread )
     {
-        if( !SetThreadPriority(p_priv->thread_id, i_priority) )
+        p_priv->thread_id = hThread;
+        ResumeThread (hThread);
+        i_ret = 0;
+        if( i_priority && !SetThreadPriority (hThread, i_priority) )
         {
             msg_Warn( p_this, "couldn't set a faster priority" );
             i_priority = 0;
         }
     }
+    else
+        i_ret = errno;
 
 #elif defined( HAVE_KERNEL_SCHEDULER_H )
     p_priv->thread_id = spawn_thread( (thread_func)thread_entry, psz_name,




More information about the vlc-devel mailing list