Fix the VC6 build on Windows following commit 3be8f09452
authorSteve Hay <steve.m.hay@googlemail.com>
Fri, 13 Sep 2013 21:57:59 +0000 (22:57 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Fri, 13 Sep 2013 22:09:50 +0000 (23:09 +0100)
The VC6 compiler has slightly flaky support for __int64 and chokes on util.c
when using the 64-bit implementation of drand48, so switch it to the 32-bit
version instead.

util.c
util.h

diff --git a/util.c b/util.c
index 28cc706..79e4000 100644 (file)
--- a/util.c
+++ b/util.c
@@ -6287,6 +6287,7 @@ Perl_drand48_r(perl_drand48_t *random_state)
 
     return ldexp(*random_state, -48);
 #else
+    {
     U32 accu;
     U16 temp[2];
 
@@ -6308,6 +6309,7 @@ Perl_drand48_r(perl_drand48_t *random_state)
     return ldexp((double) random_state->seed[0], -48) +
            ldexp((double) random_state->seed[1], -32) +
            ldexp((double) random_state->seed[2], -16);
+    }
 #endif
 }
  
diff --git a/util.h b/util.h
index 4e5b97d..38c8d2f 100644 (file)
--- a/util.h
+++ b/util.h
@@ -54,8 +54,11 @@ This is a synonym for (! foldEQ_locale())
 
 /* perl.h undefs HAS_QUAD if IV isn't 64-bit */
 #ifdef U64TYPE
-/* use a faster implementation when quads are available */
-#define PERL_DRAND48_QUAD
+#  if !defined(_MSC_VER) || _MSC_VER >= 1300
+/* use a faster implementation when quads are available,
+ * but not with VC6 on Windows */
+#    define PERL_DRAND48_QUAD
+#  endif
 #endif
 
 #ifdef PERL_DRAND48_QUAD