From 3eb7e6ee5eec319c27fd8e3a20f654be0d3e28ab Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 5 Oct 1999 18:57:31 +0000 Subject: [PATCH] * numbers.c (scm_string_to_number): Signal an error if radix is less than two. (Thanks to Jorgen Schaefer.) * print.c (scm_write, scm_display, scm_newline, scm_write_char): Don't assume that the current output port is valid. Somebody might close it. (Thanks to Bernard Urban.) --- libguile/numbers.c | 6 +++++- libguile/print.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libguile/numbers.c b/libguile/numbers.c index ff7ce2821..769562829 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -2450,7 +2450,11 @@ scm_string_to_number (str, radix) if (SCM_UNBNDP (radix)) radix = SCM_MAKINUM (10L); else - SCM_ASSERT (SCM_INUMP (radix), radix, SCM_ARG2, s_string_to_number); + { + SCM_ASSERT (SCM_INUMP (radix), radix, SCM_ARG2, s_string_to_number); + SCM_ASSERT (SCM_INUM (radix) >= 2, radix, SCM_OUTOFRANGE, + s_number_to_string); + } SCM_ASSERT (SCM_NIMP (str) && SCM_ROSTRINGP (str), str, SCM_ARG1, s_string_to_number); answer = scm_istring2number (SCM_ROCHARS (str), diff --git a/libguile/print.c b/libguile/print.c index 9fe3c0b96..31936f1e9 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -917,8 +917,8 @@ scm_write (obj, port) { if (SCM_UNBNDP (port)) port = scm_cur_outp; - else - SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_write); + + SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_write); scm_prin1 (obj, port, 1); #ifdef HAVE_PIPE @@ -940,8 +940,8 @@ scm_display (obj, port) { if (SCM_UNBNDP (port)) port = scm_cur_outp; - else - SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_display); + + SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_display); scm_prin1 (obj, port, 0); #ifdef HAVE_PIPE @@ -961,8 +961,8 @@ scm_newline (port) { if (SCM_UNBNDP (port)) port = scm_cur_outp; - else - SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG1, s_newline); + + SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG1, s_newline); scm_putc ('\n', SCM_COERCE_OUTPORT (port)); return SCM_UNSPECIFIED; @@ -977,8 +977,8 @@ scm_write_char (chr, port) { if (SCM_UNBNDP (port)) port = scm_cur_outp; - else - SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_write_char); + + SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_write_char); SCM_ASSERT (SCM_ICHRP (chr), chr, SCM_ARG1, s_write_char); scm_putc ((int) SCM_ICHR (chr), SCM_COERCE_OUTPORT (port));