Time functions in time64.c need thread context on VMS.
authorCraig A. Berry <craigberry@mac.com>
Fri, 27 Jun 2014 12:58:42 +0000 (07:58 -0500)
committerCraig A. Berry <craigberry@mac.com>
Fri, 27 Jun 2014 12:58:42 +0000 (07:58 -0500)
In order to support the C<vmsish 'time'> pragma, the wrappers for
gmtime and localtime need thread context, which in the case of
localtime was removed in 23491f1decae17401c5.  Add it back but
make it VMS-specific and turn the comment indicating why it's
there into a more direct statement.

time64.c

index 555286b..74914bd 100644 (file)
--- a/time64.c
+++ b/time64.c
@@ -300,8 +300,8 @@ static void S_copy_little_tm_to_big_TM(const struct tm *src, struct TM *dest) {
 #ifndef HAS_LOCALTIME_R
 /* Simulate localtime_r() to the best of our ability */
 static struct tm * S_localtime_r(const time_t *clock, struct tm *result) {
-#ifdef VMS
-    dTHX;    /* in case the following is defined as Perl_my_localtime(aTHX_ ...) */
+#ifdef __VMS
+    dTHX;    /* the following is defined as Perl_my_localtime(aTHX_ ...) */
 #endif
     const struct tm *static_result = localtime(clock);
 
@@ -321,6 +321,9 @@ static struct tm * S_localtime_r(const time_t *clock, struct tm *result) {
 #ifndef HAS_GMTIME_R
 /* Simulate gmtime_r() to the best of our ability */
 static struct tm * S_gmtime_r(const time_t *clock, struct tm *result) {
+#ifdef __VMS
+    dTHX;    /* the following is defined as Perl_my_localtime(aTHX_ ...) */
+#endif
     const struct tm *static_result = gmtime(clock);
 
     assert(result != NULL);