From 302e3218b7d487539ec305bf23881a6ee7d5be99 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:29 -0800 Subject: Import Upstream version 5e1 --- sys.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'sys.c') diff --git a/sys.c b/sys.c index 0ace3a5..8308fba 100644 --- a/sys.c +++ b/sys.c @@ -61,13 +61,14 @@ SCM *loc_try_create_file; #ifndef STDC_HEADERS char *ttyname P((int fd)); char *tmpnam P((char *s)); - sizet fwrite (); # ifdef sun # ifndef __SVR4 int fputs P((char *s, FILE* stream)); int fputc P((char c, FILE* stream)); int fflush P((FILE* stream)); # endif +# else + sizet fwrite (); # endif int fgetc P((FILE* stream)); int fclose P((FILE* stream)); @@ -1679,9 +1680,9 @@ SCM scm_make_cont() return cont; } static char s_sstale[] = "strangely stale"; -void scm_dynthrow(tocont, val) +void scm_dynthrow(tocont, arg1, arg2, rest) SCM tocont; - SCM val; + SCM arg1, arg2, rest; { CONTINUATION *cont = CONT(tocont); if (cont->stkbse != CONT(rootcont)->stkbse) @@ -1708,9 +1709,14 @@ void scm_dynthrow(tocont, val) scm_trace_env = cont->other.stkframe[2]; scm_trace = cont->other.stkframe[3]; #endif + if (!UNBNDP(arg2) && IM_VALUES_TOKEN == scm_env_tmp) { + scm_env_cons(arg2, rest); + arg2 = UNDEFINED; + } ALLOW_INTS; } - throw_to_continuation(cont, val, CONT(rootcont)); + if (!UNBNDP(arg2)) return; /* eval will signal wrong number of args */ + throw_to_continuation(cont, arg1, CONT(rootcont)); wta(tocont, s_sstale, s_cont); } -- cgit v1.2.3