diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-08-23 01:21:07 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-08-23 01:21:07 +0000 |
commit | faa6b3dfb69adf0eb18158c2c8f9f9495c214381 (patch) | |
tree | 0388d872bcc4339b3ef7799ac74af96297a8ce0c | |
parent | 39f1ef511c5263c36cd82d18b834ce6b54022046 (diff) | |
download | guile-faa6b3dfb69adf0eb18158c2c8f9f9495c214381.tar.gz |
* gscm.c, init.c, root.c, throw.c: Bug fixes:
last_debug_info_frame is now updated in all cases.
-rw-r--r-- | libguile/gscm.c | 4 | ||||
-rw-r--r-- | libguile/init.c | 3 | ||||
-rw-r--r-- | libguile/root.c | 6 | ||||
-rw-r--r-- | libguile/throw.c | 13 |
4 files changed, 19 insertions, 7 deletions
diff --git a/libguile/gscm.c b/libguile/gscm.c index 5eedc9755..a64d80834 100644 --- a/libguile/gscm.c +++ b/libguile/gscm.c @@ -225,8 +225,8 @@ _eval_port (answer, toplvl, port, printp) #endif saved_inp = scm_cur_inp; i = setjmp (SCM_JMPBUF (scm_rootcont)); -#ifdef SCM_STACK_CHECK - scm_check_stack_p = 1; +#ifdef STACK_CHECKING + scm_stack_checking_enabled_p = SCM_STACK_CHECKING_P; #endif if (!i) { diff --git a/libguile/init.c b/libguile/init.c index 7335053ca..c61f817d1 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -363,6 +363,9 @@ scm_boot_guile (result, argc, argv, in, out, err, init_func, boot_cmd) setjmp_val = setjmp (SCM_JMPBUF (scm_rootcont)); +#ifdef STACK_CHECKING + scm_stack_checking_enabled_p = SCM_STACK_CHECKING_P; +#endif if (!setjmp_val) { SCM last; diff --git a/libguile/root.c b/libguile/root.c index 9db2e9b18..8b3a63a1e 100644 --- a/libguile/root.c +++ b/libguile/root.c @@ -81,7 +81,13 @@ scm_call_catching_errors (thunk, err_filter, closure) { SCM answer; setjmp_type i; +#ifdef DEBUG_EXTENSIONS + SCM_DFRAME (scm_rootcont) = last_debug_info_frame; +#endif i = setjmp (SCM_JMPBUF (scm_rootcont)); +#ifdef STACK_CHECKING + scm_stack_checking_enabled_p = SCM_STACK_CHECKING_P; +#endif if (!i) { scm_gc_heap_lock = 0; diff --git a/libguile/throw.c b/libguile/throw.c index 33ca1b8e2..aa353a511 100644 --- a/libguile/throw.c +++ b/libguile/throw.c @@ -67,10 +67,10 @@ SCM scm_bad_throw_vcell; #define SETJBJMPBUF(O,X) SCM_SETCDR(SCM_CDR (O), X) #ifdef __STDC__ -static int +static scm_sizet freejb (SCM jbsmob) #else -static int +static scm_sizet freejb (jbsmob) SCM jbsmob; #endif @@ -258,13 +258,13 @@ scm_ithrow (key, args, noreturn) { scm_exitval = scm_cons (key, args); scm_dowinds (SCM_EOL, scm_ilength (scm_dynwinds)); +#ifdef DEBUG_EXTENSIONS + last_debug_info_frame = SCM_DFRAME (scm_rootcont); +#endif longjmp (SCM_JMPBUF (scm_rootcont), 1); } } } -#ifdef DEBUG_EXTENSIONS - last_debug_info_frame = JBSCM_DFRAME (jmpbuf); -#endif for (wind_goal = scm_dynwinds; SCM_CDAR (wind_goal) != jmpbuf; wind_goal = SCM_CDR (wind_goal)) @@ -276,6 +276,9 @@ scm_ithrow (key, args, noreturn) jbr->retval = args; } scm_dowinds (wind_goal, scm_ilength (scm_dynwinds) - scm_ilength (wind_goal)); +#ifdef DEBUG_EXTENSIONS + last_debug_info_frame = JBSCM_DFRAME (jmpbuf); +#endif longjmp (*JBJMPBUF (jmpbuf), 1); } |