diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-10-31 11:18:36 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-10-31 11:21:30 +0000 |
commit | 984149bf8845dd897e038943b6177ae4fb184591 (patch) | |
tree | 24d1a646c864e58c526c39746735804afb817811 /includes/Cmm.h | |
parent | ab5008d4498177dd375f942618ceab46ae37671a (diff) | |
download | haskell-984149bf8845dd897e038943b6177ae4fb184591.tar.gz |
Fix C macro bug that was causing some stack checks to erroneously succeed
Diffstat (limited to 'includes/Cmm.h')
-rw-r--r-- | includes/Cmm.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/includes/Cmm.h b/includes/Cmm.h index 211d2a86fe..5ef6c2d282 100644 --- a/includes/Cmm.h +++ b/includes/Cmm.h @@ -372,8 +372,8 @@ CCCS_ALLOC(bytes); #define HEAP_CHECK(bytes,failure) \ - Hp = Hp + bytes; \ - if (Hp > HpLim) { HpAlloc = bytes; failure; } \ + Hp = Hp + (bytes); \ + if (Hp > HpLim) { HpAlloc = (bytes); failure; } \ TICK_ALLOC_HEAP_NOCTR(bytes); #define ALLOC_PRIM_WITH_CUSTOM_FAILURE(bytes,failure) \ @@ -400,8 +400,8 @@ #define HP_CHK_P(bytes, fun, arg) \ HEAP_CHECK(bytes, GC_PRIM_P(fun,arg)) -#define ALLOC_P_TICKY(alloc, fun, arg) \ - HP_CHK_P(alloc); \ +#define ALLOC_P_TICKY(alloc, fun, arg) \ + HP_CHK_P(alloc); \ TICK_ALLOC_HEAP_NOCTR(alloc); #define CHECK_GC() \ @@ -473,22 +473,22 @@ } #define STK_CHK(n, fun) \ - if (Sp - n < SpLim) { \ + if (Sp - (n) < SpLim) { \ GC_PRIM(fun) \ } #define STK_CHK_P(n, fun, arg) \ - if (Sp - n < SpLim) { \ + if (Sp - (n) < SpLim) { \ GC_PRIM_P(fun,arg) \ } #define STK_CHK_PP(n, fun, arg1, arg2) \ - if (Sp - n < SpLim) { \ + if (Sp - (n) < SpLim) { \ GC_PRIM_PP(fun,arg1,arg2) \ } #define STK_CHK_ENTER(n, closure) \ - if (Sp - n < SpLim) { \ + if (Sp - (n) < SpLim) { \ jump __stg_gc_enter_1(closure); \ } |