[m-rev.] diff: fix int.{min,max}_int/0 on Windows 64

Julien Fischer jfischer at opturion.com
Fri Mar 22 14:09:43 AEDT 2013


Fix int.{min,max}_int/0 on Windows 64.

library/int.m:
    On 64-bit Windows MR_Integer has the same size as C's long long type; the
    implementations of int.{min,max}_int/0 did not handle this case.

Julien.

diff --git a/library/int.m b/library/int.m
index 74cf8bd..d3f5a7c 100644
--- a/library/int.m
+++ b/library/int.m
@@ -671,6 +671,8 @@ int.max_int = X :-
         Max = INT_MAX;
     } else if (sizeof(MR_Integer) == sizeof(long)) {
         Max = LONG_MAX;
+    } else if (sizeof(MR_Integer) == sizeof(long long)) {
+        Max = LONG_LONG_MAX;
     } else {
         MR_fatal_error(""Unable to figure out max integer size"");
     }
@@ -688,6 +690,8 @@ int.min_int = X :-
         Min = INT_MIN;
     } else if (sizeof(MR_Integer) == sizeof(long)) {
         Min = LONG_MIN;
+    } else if (sizeof(MR_Integer) == sizeof(long long)) {
+        Min = LONG_LONG_MIN;
     } else {
         MR_fatal_error(""Unable to figure out min integer size"");
     }



More information about the reviews mailing list