summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>2000-01-18 18:24:57 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>2000-01-18 18:24:57 +0000
commit3fceef5984d4db692fcdde0261860b75775ad9b0 (patch)
tree6ee656198b674fa40f1b9ab692c5ba5a5fa4d2ed
parentd06bcb02eb92dfb6498bc52212c8a7d51ea1ada8 (diff)
downloadguile-3fceef5984d4db692fcdde0261860b75775ad9b0.tar.gz
* backtrace.c (scm_display_error_message): Bugfix: Don't use
result of scm_list_p as C boolean. (scm_display_error_message, scm_set_print_params_x): Use new validation macros. (Thanks to Dirk Herrmann.)
-rw-r--r--libguile/backtrace.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/libguile/backtrace.c b/libguile/backtrace.c
index f1894afb6..d3771e158 100644
--- a/libguile/backtrace.c
+++ b/libguile/backtrace.c
@@ -109,16 +109,16 @@ display_header (SCM source, SCM port)
void
scm_display_error_message (SCM message, SCM args, SCM port)
{
- if (SCM_IMP (message) || !SCM_ROSTRINGP (message) || SCM_IMP (args)
- || !scm_list_p (args))
+ if (SCM_ROSTRINGP (message) && SCM_NFALSEP (scm_list_p (args)))
+ {
+ scm_simple_format (port, message, args);
+ scm_newline (port);
+ }
+ else
{
scm_prin1 (message, port, 0);
scm_putc ('\n', port);
- return;
}
-
- scm_simple_format(port,message,args);
- scm_newline(port);
}
static void
@@ -263,11 +263,13 @@ SCM_DEFINE (scm_set_print_params_x, "set-print-params!", 1, 0, 0,
"")
#define FUNC_NAME s_scm_set_print_params_x
{
- int i, n = scm_ilength (params);
+ int i;
+ int n;
SCM ls;
print_params_t *new_params;
- SCM_ASSERT (n >= 1, params, SCM_ARG2, FUNC_NAME);
- for (ls = params; SCM_NIMP (ls); ls = SCM_CDR (ls))
+
+ SCM_VALIDATE_NONEMPTYLIST_COPYLEN (2, params, n);
+ for (ls = params; SCM_NNULLP (ls); ls = SCM_CDR (ls))
SCM_ASSERT (scm_ilength (SCM_CAR (params)) == 2
&& SCM_INUMP (SCM_CAAR (ls))
&& SCM_INUM (SCM_CAAR (ls)) >= 0