]> git.sesse.net Git - vlc/commitdiff
vlccore: fix a linked list of threadvar on OS/2
authorKO Myung-Hun <komh78@gmail.com>
Sat, 2 Mar 2013 15:11:08 +0000 (00:11 +0900)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 2 Mar 2013 16:20:28 +0000 (18:20 +0200)
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
src/os2/thread.c

index a6941b92cb122d1262b20f2e05092fdc1198f891..10072aabc3ae07d5a02c7c822ec405af4c262778 100644 (file)
@@ -390,6 +390,9 @@ int vlc_threadvar_create (vlc_threadvar_t *p_tls, void (*destr) (void *))
 
     vlc_mutex_lock (&super_mutex);
     var->prev = vlc_threadvar_last;
+    if (var->prev)
+        var->prev->next = var;
+
     vlc_threadvar_last = var;
     vlc_mutex_unlock (&super_mutex);
     return 0;
@@ -402,10 +405,12 @@ void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
     vlc_mutex_lock (&super_mutex);
     if (var->prev != NULL)
         var->prev->next = var->next;
-    else
-        vlc_threadvar_last = var->next;
+
     if (var->next != NULL)
         var->next->prev = var->prev;
+    else
+        vlc_threadvar_last = var->prev;
+
     vlc_mutex_unlock (&super_mutex);
 
     DosFreeThreadLocalMemory( var->id );