summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--thread.h7
-rw-r--r--util.c12
2 files changed, 14 insertions, 5 deletions
diff --git a/thread.h b/thread.h
index 99269a1f1f..87e897417b 100644
--- a/thread.h
+++ b/thread.h
@@ -250,7 +250,12 @@
#endif /* JOIN */
#ifndef PERL_GET_CONTEXT
-# define PERL_GET_CONTEXT pthread_getspecific(PL_thr_key)
+/* True for Tru64 version 4.0 and up as well */
+# if defined(__ALPHA) && (__VMS_VER >= 70000000)
+# define PERL_GET_CONTEXT pthread_unchecked_getspecific_np(PL_thr_key)
+# else
+# define PERL_GET_CONTEXT pthread_getspecific(PL_thr_key)
+# endif
#endif
#ifndef PERL_SET_CONTEXT
diff --git a/util.c b/util.c
index 720bcf0631..848a61e9ad 100644
--- a/util.c
+++ b/util.c
@@ -3489,10 +3489,14 @@ Perl_get_context(void)
Perl_croak_nocontext("panic: pthread_getspecific");
return (void*)t;
# else
-# ifdef I_MACH_CTHREADS
- return (void*)cthread_data(cthread_self());
-# else
- return (void*)pthread_getspecific(PL_thr_key);
+# ifdef I_MACH_CTHREADS
+ return (void*)cthread_data(cthread_self());
+# else
+# if defined(__ALPHA) && (__VMS_VER >= 70000000)
+ return (void*)pthread_unchecked_getspecific_np(PL_thr_key);
+# else
+ return (void*)pthread_getspecific(PL_thr_key);
+# endif
# endif
# endif
#else