fix parsing of here documents in C<eval 's/.../<<FOO/e'>
[p5sagit/p5-mst-13.2.git] / thread.h
index 1455683..882158c 100644 (file)
--- a/thread.h
+++ b/thread.h
@@ -50,6 +50,14 @@ struct perl_thread *getTHR _((void));
 #  define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,s)
 #endif
 
+#ifndef PTHREAD_CREATE_JOINABLE
+#  ifdef OLD_PTHREAD_CREATE_JOINABLE
+#    define PTHREAD_CREATE_JOINABLE OLD_PTHREAD_CREATE_JOINABLE
+#  else
+#    define PTHREAD_CREATE_JOINABLE 0 /* Panic?  No, guess. */
+#  endif
+#endif
+
 #ifdef I_MACH_CTHREADS
 
 /* cthreads interface */
@@ -128,12 +136,26 @@ struct perl_thread *getTHR _((void));
 #  endif
 #endif
 
+#ifdef __hpux
+#  define MUTEX_INIT_NEEDS_MUTEX_ZEROED
+#endif
+
 #ifndef MUTEX_INIT
+#ifdef MUTEX_INIT_NEEDS_MUTEX_ZEROED
+    /* Temporary workaround, true bug is deeper. --jhi 1999-02-25 */
+#define MUTEX_INIT(m)                                          \
+    STMT_START {                                               \
+       Zero((m), 1, perl_mutex);                               \
+       if (pthread_mutex_init((m), pthread_mutexattr_default)) \
+           croak("panic: MUTEX_INIT");                         \
+    } STMT_END
+#else
 #define MUTEX_INIT(m)                                          \
     STMT_START {                                               \
        if (pthread_mutex_init((m), pthread_mutexattr_default)) \
            croak("panic: MUTEX_INIT");                         \
     } STMT_END
+#endif
 #define MUTEX_LOCK(m)                          \
     STMT_START {                               \
        if (pthread_mutex_lock((m)))            \