summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1996-08-23 01:21:07 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1996-08-23 01:21:07 +0000
commitfaa6b3dfb69adf0eb18158c2c8f9f9495c214381 (patch)
tree0388d872bcc4339b3ef7799ac74af96297a8ce0c
parent39f1ef511c5263c36cd82d18b834ce6b54022046 (diff)
downloadguile-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.c4
-rw-r--r--libguile/init.c3
-rw-r--r--libguile/root.c6
-rw-r--r--libguile/throw.c13
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);
}