summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hints/hpux.sh9
-rw-r--r--thread.h14
2 files changed, 20 insertions, 3 deletions
diff --git a/hints/hpux.sh b/hints/hpux.sh
index 70250b7a75..b215335c72 100644
--- a/hints/hpux.sh
+++ b/hints/hpux.sh
@@ -237,11 +237,14 @@ EOM
# instead of fd_set * (just like 9.X)
selecttype='int *'
;;
- 11 | 12) # 12 may want upping the _POSIX_C_SOURCE
- ccflags="$ccflags -D_POSIX_C_SOURCE=199506L"
- libswanted="$libswanted pthread"
+ 11 | 12) # 12 may want upping the _POSIX_C_SOURCE datestamp...
+ ccflags=" -D_POSIX_C_SOURCE=199506L $ccflags"
+ set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
+ shift
+ libswanted="$*"
;;
esac
+ usemymalloc='n'
;;
esac
EOCBU
diff --git a/thread.h b/thread.h
index 695f288c4b..882158cdbb 100644
--- a/thread.h
+++ b/thread.h
@@ -136,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))) \