]> git.sesse.net Git - vlc/commitdiff
win32: do not clobber error status when touching thread variables
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 21 Jul 2013 16:14:56 +0000 (19:14 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 21 Jul 2013 16:14:56 +0000 (19:14 +0300)
src/win32/thread.c

index 45abc4e4155b4a4926c3ab4f580663076999f0ea..d13ac0861caf925d0bfdf835a45ab4a5653f0075 100644 (file)
@@ -358,12 +358,21 @@ void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
 
 int vlc_threadvar_set (vlc_threadvar_t key, void *value)
 {
-    return TlsSetValue (key->id, value) ? ENOMEM : 0;
+    int saved = GetLastError ();
+    int val = TlsSetValue (key->id, value) ? ENOMEM : 0;
+
+    if (val == 0)
+        SetLastError(saved);
+    return val;
 }
 
 void *vlc_threadvar_get (vlc_threadvar_t key)
 {
-    return TlsGetValue (key->id);
+    int saved = GetLastError ();
+    void *value = TlsGetValue (key->id);
+
+    SetLastError(saved);
+    return value;
 }
 
 /*** Threads ***/