]> git.sesse.net Git - vlc/blobdiff - bin/override.c
decoder: fix data race in input_DecoderChangePause()
[vlc] / bin / override.c
index ac9e14cddd5bf98be6ad55e8726dc007a53868fd..fb4608c969c8d9c16f255a17180a6cade4e9587b 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * override.c: overriden function calls for VLC media player
+ * override.c: overridden function calls for VLC media player
  *****************************************************************************
  * Copyright (C) 2010 RĂ©mi Denis-Courmont
  *
@@ -39,6 +39,7 @@ void vlc_enable_override (void);
 #include <pthread.h>
 #ifdef HAVE_EXECINFO_H
 # include <execinfo.h>
+# include <unistd.h>
 #endif
 #ifdef NDEBUG
 # undef HAVE_BACKTRACE
@@ -75,7 +76,7 @@ static void vlogbug (unsigned *pc, const char *level, const char *func,
         fputs (")\n", stderr);
         fflush (stderr);
 #ifdef HAVE_BACKTRACE
-        backtrace_symbols_fd (framev + 2, framec - 2, fileno (stderr));
+        backtrace_symbols_fd (framev + 2, framec - 2, STDERR_FILENO);
 #endif
     }
     funlockfile (stderr);
@@ -111,22 +112,10 @@ static void *getsym (const char *name)
 
 /* Evil non-standard GNU C macro ;)
  *  typeof keyword,
- *  statement-expression,
- *  nested function...
+ *  statement-expression
  */
 #define CALL(func, ...) \
-({ \
-    static typeof (func) *sym = NULL; \
-    static pthread_once_t once = PTHREAD_ONCE_INIT; \
-    auto void getsym_once (void); \
-    void getsym_once (void) \
-    { \
-        sym = getsym ( # func); \
-    } \
-    pthread_once (&once, getsym_once); \
-    sym (__VA_ARGS__); \
-})
-
+({ typeof (func) *sym = getsym ( # func); sym (__VA_ARGS__); })
 
 /*** Environment ***
  *