summaryrefslogtreecommitdiff
path: root/libguile/frames.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-05-10 13:02:11 +0200
committerAndy Wingo <wingo@pobox.com>2012-05-10 13:02:11 +0200
commit968a9add65c5e3a33ab9f5b7697051c5b9282060 (patch)
treef793baeb1f36037956c161c0ddc168fdbe5ec387 /libguile/frames.c
parenta3ded46520b35a8dbda22097b74792b8282d12ce (diff)
parent67b699cc77d5e2f74daca77aa26b1ba8af0d0808 (diff)
downloadguile-968a9add65c5e3a33ab9f5b7697051c5b9282060.tar.gz
Merge remote-tracking branch 'local-2.0/stable-2.0'
Conflicts: libguile/vm-engine.c libguile/vm-i-system.c libguile/vm.c
Diffstat (limited to 'libguile/frames.c')
-rw-r--r--libguile/frames.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libguile/frames.c b/libguile/frames.c
index b57b1295d..b90b5a28c 100644
--- a/libguile/frames.c
+++ b/libguile/frames.c
@@ -237,11 +237,16 @@ SCM_DEFINE (scm_frame_instruction_pointer, "frame-instruction-pointer", 1, 0, 0,
"")
#define FUNC_NAME s_scm_frame_instruction_pointer
{
+ SCM program;
const struct scm_objcode *c_objcode;
SCM_VALIDATE_VM_FRAME (1, frame);
+ program = scm_frame_procedure (frame);
- c_objcode = SCM_PROGRAM_DATA (scm_frame_procedure (frame));
+ if (!SCM_PROGRAM_P (program))
+ return SCM_INUM0;
+
+ c_objcode = SCM_PROGRAM_DATA (program);
return scm_from_unsigned_integer ((SCM_VM_FRAME_IP (frame)
- SCM_C_OBJCODE_BASE (c_objcode)));
}