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);