diff options
author | Andy Wingo <wingo@pobox.com> | 2013-10-17 23:25:01 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-10-17 23:25:01 +0200 |
commit | 361d0de285587ef4c9f19b9e07c1175424520aa5 (patch) | |
tree | af528a4ca83d474accc8184abc41bad3f8dd6c37 | |
parent | 9d87158fdb1c3159db90911e96d833392a02ff58 (diff) | |
download | guile-361d0de285587ef4c9f19b9e07c1175424520aa5.tar.gz |
Stack traces skip RTL boot frames
* libguile/frames.c (frame-previous)
* libguile/stacks.c (make-stack): Skip RTL boot frames.
-rw-r--r-- | libguile/frames.c | 3 | ||||
-rw-r--r-- | libguile/stacks.c | 5 |
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); |