From f07870783a31b3545cb2906659d5cfea90d90f0e Mon Sep 17 00:00:00 2001 From: simonmar Date: Tue, 12 Jul 2005 12:20:58 +0000 Subject: [PATCH] [project @ 2005-07-12 12:20:58 by simonmar] More 64-fixing --- ghc/rts/Interpreter.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ghc/rts/Interpreter.c b/ghc/rts/Interpreter.c index 4599552..004bb6f 100644 --- a/ghc/rts/Interpreter.c +++ b/ghc/rts/Interpreter.c @@ -514,7 +514,7 @@ do_apply: case PAP: { StgPAP *pap; - nat arity, i; + nat i, arity; pap = (StgPAP *)obj; @@ -534,7 +534,8 @@ do_apply: // Shuffle the args for this function down, and put // the appropriate info table in the gap. for (i = 0; i < arity; i++) { - Sp[i-1] = Sp[i]; + Sp[(int)i-1] = Sp[i]; + // ^^^^^ careful, i-1 might be negative, but i in unsigned } Sp[arity-1] = app_ptrs_itbl[n-arity-1]; Sp--; @@ -577,8 +578,7 @@ do_apply: } case BCO: { - nat arity; - int i; // arithmetic involving i might go negative below + nat arity, i; Sp++; arity = ((StgBCO *)obj)->arity; @@ -591,7 +591,8 @@ do_apply: // Shuffle the args for this function down, and put // the appropriate info table in the gap. for (i = 0; i < arity; i++) { - Sp[i-1] = Sp[i]; + Sp[(int)i-1] = Sp[i]; + // ^^^^^ careful, i-1 might be negative, but i in unsigned } Sp[arity-1] = app_ptrs_itbl[n-arity-1]; Sp--; -- 1.7.10.4