[darwinbuild-changes] [1031] branches/PR-11056762/darwintrace/darwintrace.c

source_changes at macosforge.org source_changes at macosforge.org
Thu Mar 22 13:26:08 PDT 2012


Revision: 1031
          http://trac.macosforge.org/projects/darwinbuild/changeset/1031
Author:   kvv at apple.com
Date:     2012-03-22 13:26:07 -0700 (Thu, 22 Mar 2012)
Log Message:
-----------
<rdar://problem/11056762> crash in darwintrace.dylib when building clang

Modified Paths:
--------------
    branches/PR-11056762/darwintrace/darwintrace.c

Modified: branches/PR-11056762/darwintrace/darwintrace.c
===================================================================
--- branches/PR-11056762/darwintrace/darwintrace.c	2012-03-22 20:25:46 UTC (rev 1030)
+++ branches/PR-11056762/darwintrace/darwintrace.c	2012-03-22 20:26:07 UTC (rev 1031)
@@ -32,6 +32,7 @@
 
 #include <crt_externs.h>
 #include <fcntl.h>
+#include <pthread.h>
 #include <spawn.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -141,9 +142,7 @@
   if (path != test) free(path);
 }
 
-static inline void darwintrace_setup() {
-  if (darwintrace_fd != -2) return;
-  
+static void _darwintrace_setup(void) {
   char* path = getenv("DARWINTRACE_LOG");
   if (path != NULL) {
     int olderrno = errno;
@@ -222,6 +221,11 @@
   }
 }
 
+static inline void darwintrace_setup(void) {
+	static pthread_once_t once = PTHREAD_ONCE_INIT;
+	pthread_once(&once, &_darwintrace_setup);
+}
+
 /* darwintrace_setup must have been called already */
 static inline void darwintrace_logpath(int fd, const char *procname, char *tag, const char *path) {
   if (darwintrace_ignores) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20120322/7795ee20/attachment.html>


More information about the darwinbuild-changes mailing list