We lost a hunk in change 18030 that is needed for any type of threading, not just 5005threads. The attached patch restores it. It also removes two references to USE_5005THREADS that were introduced in 19042 but should not be there for 5.9.x.
This patch is only relevant to 5.9.x, not 5.8.x.
--- vms/vms.c;-0 Fri Mar 21 02:59:14 2003
+++ vms/vms.c Sat Mar 22 13:33:13 2003
@@ -4618,6 +4618,12 @@
if (tabidx) { tabvec[tabidx] = NULL; env_tables = tabvec; }
getredirection(argcp,argvp);
+#if defined(USE_ITHREADS) && ( defined(__DECC) || defined(__DECCXX) )
+ {
+# include <reentrancy.h>
+ (void) decc$set_reentrancy(C$C_MULTITHREAD);
+ }
+#endif
return;
}
/*}}}*/
@@ -4845,7 +4851,7 @@
dd->pat.dsc$w_length = strlen(dd->pattern);
dd->pat.dsc$b_dtype = DSC$K_DTYPE_T;
dd->pat.dsc$b_class = DSC$K_CLASS_S;
-#if defined(USE_5005THREADS) || defined(USE_ITHREADS)
+#if defined(USE_ITHREADS)
New(1308,dd->mutex,1,perl_mutex);
MUTEX_INIT( (perl_mutex *) dd->mutex );
#else
@@ -4876,7 +4882,7 @@
{
(void)lib$find_file_end(&dd->context);
Safefree(dd->pattern);
-#if defined(USE_5005THREADS) || defined(USE_ITHREADS)
+#if defined(USE_ITHREADS)
MUTEX_DESTROY( (perl_mutex *) dd->mutex );
Safefree(dd->mutex);
#endif
