From: simonmar Date: Fri, 13 Dec 2002 14:23:42 +0000 (+0000) Subject: [project @ 2002-12-13 14:23:42 by simonmar] X-Git-Tag: nhc98-1-18-release~782 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=22720d0230bac212fc7104dbff66a4f8b769c609;p=haskell-directory.git [project @ 2002-12-13 14:23:42 by simonmar] Fix bugs caused by missing casts in arithmetic expressions in stg_integerToInt64 and stg_integerToWord64. --- diff --git a/cbits/longlong.c b/cbits/longlong.c index 4a04abf..f6e8567 100644 --- a/cbits/longlong.c +++ b/cbits/longlong.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: longlong.c,v 1.3 2002/03/19 11:24:52 simonmar Exp $ + * $Id: longlong.c,v 1.4 2002/12/13 14:23:42 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -96,9 +96,9 @@ StgWord64 stg_integerToWord64 (I_ sa, StgByteArray /* Really: mp_limb_t* */ da) switch (s) { case 0: res = 0; break; case 1: res = d[0]; break; - case -1: res = -d[0]; break; + case -1: res = -(StgWord64)d[0]; break; default: - res = d[0] + ((StgWord64) d[1] << (BITS_IN (mp_limb_t))); + res = (StgWord64)d[0] + ((StgWord64)d[1] << (BITS_IN (mp_limb_t))); if (s < 0) res = -res; } return res; @@ -114,9 +114,9 @@ StgInt64 stg_integerToInt64 (StgInt sa, StgByteArray /* Really: mp_limb_t* */ da switch (s) { case 0: res = 0; break; case 1: res = d[0]; break; - case -1: res = -d[0]; break; + case -1: res = -(StgInt64)d[0]; break; default: - res = d[0] + ((StgWord64) d[1] << (BITS_IN (mp_limb_t))); + res = (StgInt64)d[0] + ((StgWord64)d[1] << (BITS_IN (mp_limb_t))); if (s < 0) res = -res; } return res;