From 28d68fa9ddc34d7411e4dde21737e26cc2cdc281 Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Tue, 20 Sep 2005 09:12:21 +0000 Subject: [PATCH] 0.9.4.79: Don't call alloc_sap before fake_foreign_function_call is run, because this will reset dynamic_space_free_pointer to the original reg_ALLOC value from the signal context, so the next (Lisp-side) allocation will overwrite the SAP object. This may fix Bug #379 (at least partially). --- src/runtime/breakpoint.c | 6 ++++-- version.lisp-expr | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/runtime/breakpoint.c b/src/runtime/breakpoint.c index cf829ad..4b3ee03 100644 --- a/src/runtime/breakpoint.c +++ b/src/runtime/breakpoint.c @@ -134,10 +134,11 @@ static long compute_offset(os_context_t *context, lispobj code) void handle_breakpoint(int signal, siginfo_t* info, os_context_t *context) { - lispobj code, context_sap = alloc_sap(context); + lispobj code, context_sap; fake_foreign_function_call(context); + context_sap = alloc_sap(context); code = find_code(context); /* Don't disallow recursive breakpoint traps. Otherwise, we can't @@ -186,11 +187,12 @@ void *handle_fun_end_breakpoint(int signal, siginfo_t *info, void *handle_fun_end_breakpoint(int signal, siginfo_t *info, os_context_t *context) { - lispobj code, context_sap = alloc_sap(context); + lispobj code, context_sap; struct code *codeptr; fake_foreign_function_call(context); + context_sap = alloc_sap(context); code = find_code(context); codeptr = (struct code *)native_pointer(code); diff --git a/version.lisp-expr b/version.lisp-expr index 7bc45bf..b0c89e9 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.4.78" +"0.9.4.79" -- 1.7.10.4