summaryrefslogtreecommitdiff
path: root/libguile/programs.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/programs.c')
-rw-r--r--libguile/programs.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libguile/programs.c b/libguile/programs.c
index 8d2b04e87..274114762 100644
--- a/libguile/programs.c
+++ b/libguile/programs.c
@@ -172,9 +172,12 @@ SCM_DEFINE (scm_primitive_call_ip, "primitive-call-ip", 1, 0, 0,
"")
#define FUNC_NAME s_scm_primitive_call_ip
{
+ uintptr_t ip;
+
SCM_MAKE_VALIDATE (1, prim, PRIMITIVE_P);
- return scm_from_uintptr_t (scm_i_primitive_call_ip (prim));
+ ip = scm_i_primitive_call_ip (prim);
+ return ip ? scm_from_uintptr_t (ip) : SCM_BOOL_F;
}
#undef FUNC_NAME
@@ -312,11 +315,18 @@ try_parse_arity (SCM program, int *req, int *opt, int *rest)
*opt = slots - min;
*rest = 1;
return 1;
+ case scm_op_shuffle_down:
+ case scm_op_abort:
+ *req = min - 1;
+ *opt = 0;
+ *rest = 1;
+ return 1;
default:
return 0;
}
case scm_op_continuation_call:
case scm_op_compose_continuation:
+ case scm_op_shuffle_down:
*req = 0;
*opt = 0;
*rest = 1;