[CM] More trouble with (values) from C with bonus segfault

bil at ccrma.Stanford.EDU bil at ccrma.Stanford.EDU
Wed Oct 1 11:40:51 PDT 2025


(apply format #t "not ok 4 - ~A" X) is a format error because "apply" 
splices
its last list argument into the preceding argument list, so you're 
getting
(format #t "not ok 4 - ~A" 0 1 2 3).  Since the error is not caught, the
repl does not try to handle it cleanly, but just prints out the various
arguments.  Normally you'd do something like (apply format #t info) in
catch:

(catch #t
   (lambda ()
     (apply format #t "values4: ~A" (list 0 1 2 3)))
   (lambda (type info)
     (apply format #t info)))

which prints "format: "values4: ~A" 0 1 2 3
                                 ^: too many arguments"

(apply format #t "values4: ~A" (values4)) gets a complaint that apply's
last argument should be a list.  I'm not sure of the context, but I 
don't
get a segfault.  In the last case, the control string is not terminated,
I think, so strlen returns some garbage for its length.  I can't get 
this
to happen in a repl.



More information about the Cmdist mailing list