summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/frames.c3
-rw-r--r--libguile/stacks.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/libguile/frames.c b/libguile/frames.c
index 448a0cbbe..b2973bf67 100644
--- a/libguile/frames.c
+++ b/libguile/frames.c
@@ -334,7 +334,8 @@ SCM_DEFINE (scm_frame_previous, "frame-previous", 1, 0, 0,
SCM_VM_FRAME_OFFSET (frame));
proc = scm_frame_procedure (frame);
- if (SCM_PROGRAM_P (proc) && SCM_PROGRAM_IS_BOOT (proc))
+ if ((SCM_PROGRAM_P (proc) || SCM_RTL_PROGRAM_P (proc))
+ && SCM_PROGRAM_IS_BOOT (proc))
goto again;
else
return frame;
diff --git a/libguile/stacks.c b/libguile/stacks.c
index c3ea624ce..fd19a492a 100644
--- a/libguile/stacks.c
+++ b/libguile/stacks.c
@@ -1,5 +1,5 @@
/* A stack holds a frame chain
- * Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation
+ * Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -276,7 +276,8 @@ SCM_DEFINE (scm_make_stack, "make-stack", 1, 0, 1,
/* FIXME: is this even possible? */
if (scm_is_true (frame)
- && SCM_PROGRAM_P (scm_frame_procedure (frame))
+ && (SCM_PROGRAM_P (scm_frame_procedure (frame))
+ || SCM_RTL_PROGRAM_P (scm_frame_procedure (frame)))
&& SCM_PROGRAM_IS_BOOT (scm_frame_procedure (frame)))
frame = scm_frame_previous (frame);