diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index 3f45b21c..8641cba3 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -202,7 +202,7 @@ object Cyc_number2string2(void *data, object cont, int argc, object n, ...); object Cyc_symbol2string(void *d, object cont, object sym); object Cyc_string2symbol(void *d, object str); object Cyc_list2string(void *d, object cont, object lst); -object Cyc_list(void *data, int argc, object cont, object objs_raw, ...); +object Cyc_list(void *data, int argc, object cont, ...); object Cyc_string2number_(void *d, object cont, object str); object Cyc_string2number2_(void *data, object cont, int argc, object str, ...); int binstr2int(const char *str); diff --git a/runtime.c b/runtime.c index 039f0b15..a2cf65ad 100644 --- a/runtime.c +++ b/runtime.c @@ -1629,11 +1629,11 @@ object Cyc_list2string(void *data, object cont, object lst) } } -object Cyc_list(void *data, int argc, object cont, object objs_raw, ...) +object Cyc_list(void *data, int argc, object cont, ...) { - load_varargs(objs, objs_raw, argc - 1); - //Cyc_st_add(data, "scheme/base.sld:list"); - _return_closcall1(data, cont, objs); + load_varargs(objs, cont, argc); + //Cyc_st_add(data, "Cyc-list"); + _return_closcall1(data, cont, cdr(objs)); } object Cyc_string2number2_(void *data, object cont, int argc, object str, ...) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index ee83c405..d2ebfcfe 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -1303,9 +1303,11 @@ (list (cps-seq (cddr fn) ;(ast-subx fn) cont-ast))) vals))) - (if (equal? (lambda-formals-type fn) 'args:varargs) - (cons 'Cyc-list code) ;; Manually build up list - code))))) + (cond + ((equal? (lambda-formals-type fn) 'args:varargs) + (cons 'Cyc-list code)) ;; Manually build up list + (else + code)))))) (else (cps-list ast ;(ast-subx ast) (lambda (args)