[commit: packages/unix] master: Fix assumption that RLIM_INFINITY is a simple number (b092e35)

git at git.haskell.org git at git.haskell.org
Sat Oct 12 23:49:04 UTC 2013


Repository : ssh://git@git.haskell.org/unix

On branch  : master
Link       : http://git.haskell.org/packages/unix.git/commitdiff/b092e35f4c99bfab12247e93c7fa478de638276a

>---------------------------------------------------------------

commit b092e35f4c99bfab12247e93c7fa478de638276a
Author: Bryan O'Sullivan <bos at serpentine.com>
Date:   Sat Oct 12 16:45:50 2013 -0700

    Fix assumption that RLIM_INFINITY is a simple number
    
    On MacOS X, it is defined as "(((__uint64_t)1 << 63) - 1)", and
    hence cannot be used inside C preprocessor logic.


>---------------------------------------------------------------

b092e35f4c99bfab12247e93c7fa478de638276a
 System/Posix/Resource.hsc |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/System/Posix/Resource.hsc b/System/Posix/Resource.hsc
index a0d0d35..58cff6f 100644
--- a/System/Posix/Resource.hsc
+++ b/System/Posix/Resource.hsc
@@ -95,13 +95,16 @@ packResource ResourceTotalMemory   = (#const RLIMIT_AS)
 
 unpackRLimit :: CRLim -> ResourceLimit
 unpackRLimit (#const RLIM_INFINITY)  = ResourceLimitInfinity
-#if defined(RLIM_SAVED_MAX) && (RLIM_SAVED_MAX != RLIM_INFINITY)
-unpackRLimit (#const RLIM_SAVED_MAX) = ResourceLimitUnknown
+unpackRLimit other
+#if defined(RLIM_SAVED_MAX)
+    | (#const RLIM_SAVED_MAX) != (#const RLIM_INFINITY) &&
+      other == (#const RLIM_SAVED_MAX) = ResourceLimitUnknown
 #endif
-#if defined(RLIM_SAVED_CUR) && (RLIM_SAVED_CUR != RLIM_INFINITY)
-unpackRLimit (#const RLIM_SAVED_CUR) = ResourceLimitUnknown
+#if defined(RLIM_SAVED_CUR)
+    | (#const RLIM_SAVED_CUR) != (#const RLIM_INFINITY) &&
+      other == (#const RLIM_SAVED_CUR) = ResourceLimitUnknown
 #endif
-unpackRLimit other = ResourceLimit (fromIntegral other)
+    | otherwise = ResourceLimit (fromIntegral other)
 
 packRLimit :: ResourceLimit -> Bool -> CRLim
 packRLimit ResourceLimitInfinity _     = (#const RLIM_INFINITY)



More information about the ghc-commits mailing list