diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-07-26 10:41:44 -0400 |
---|---|---|
committer | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2020-04-13 09:46:49 +0300 |
commit | c00c81a507d31b6d51e89f00d1e4c83f71c7d382 (patch) | |
tree | a24f29d21e61332e6c565ec0840843f6a9c7d821 /rts/sm/CNF.c | |
parent | e8029816fda7602a8163c4d2703ff02982a3e48c (diff) | |
download | haskell-wip/T16992.tar.gz |
rts/CNF: Fix fixup comparison functionwip/T16992
Previously we would implicitly convert the difference between two words
to an int, resulting in an integer overflow on 64-bit machines.
Fixes #16992
Diffstat (limited to 'rts/sm/CNF.c')
-rw-r--r-- | rts/sm/CNF.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/rts/sm/CNF.c b/rts/sm/CNF.c index 43a090fd42..2c701c2c29 100644 --- a/rts/sm/CNF.c +++ b/rts/sm/CNF.c @@ -1020,8 +1020,9 @@ cmp_fixup_table_item (const void *e1, const void *e2) { const StgWord *w1 = e1; const StgWord *w2 = e2; - - return *w1 - *w2; + if (*w1 > *w2) return +1; + else if (*w1 < *w2) return -1; + else return 0; } static StgWord * |