summaryrefslogtreecommitdiffstats
path: root/byterun/debugger.c
diff options
context:
space:
mode:
authorJérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr>1997-06-18 20:18:41 +0000
committerJérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr>1997-06-18 20:18:41 +0000
commiteddd99bd52c8b1ef0489d276fb4b6cc642035b18 (patch)
treea1935cfe90ae3a0015c5c0914586fad91226db37 /byterun/debugger.c
parenta8bd7282212a193c9f2a752e6cb75f6963974c24 (diff)
Bug dans le calcul de la taille de frame (prendre en compte extra_args).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1622 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/debugger.c')
-rw-r--r--byterun/debugger.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/byterun/debugger.c b/byterun/debugger.c
index 5be000a41..542d8dab2 100644
--- a/byterun/debugger.c
+++ b/byterun/debugger.c
@@ -169,6 +169,7 @@ static void safe_output_value(chan, val)
#define Pc(sp) ((code_t)(sp[0]))
#define Env(sp) (sp[1])
+#define Extra_args(sp) (Long_val((sp[2])))
#define Locals(sp) (sp + 3)
void debugger(event)
@@ -270,10 +271,10 @@ void debugger(event)
break;
case REQ_UP_FRAME:
i = getword(dbg_in);
- if (frame + i + 3 >= stack_high) {
+ if (frame + Extra_args(frame) + i + 3 >= stack_high) {
putword(dbg_out, -1);
} else {
- frame += i + 3;
+ frame += Extra_args(frame) + i + 3;
putword(dbg_out, stack_high - frame);
putword(dbg_out, (Pc(frame) - start_code) * sizeof(opcode_t));
}