From 80d2db51d8665576d7a454b1d99438e034de7e5b Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 19 Jun 2020 16:45:41 +0900 Subject: [PATCH] fix sexp_opcode_argn_type initialization with gaps between the 3rd arg and k>4th arg --- tools/chibi-ffi | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/chibi-ffi b/tools/chibi-ffi index b7e8ea72..a0075fdb 100755 --- a/tools/chibi-ffi +++ b/tools/chibi-ffi @@ -1826,19 +1826,20 @@ (type-id-init-value (func-ret-type func)) ";\n" (lambda () (let lp ((ls (func-c-args func)) - (i 1)) + (i 1) + (vec? #f)) (cond ((null? ls)) ;; ((type-value (car ls)) ;; (lp (cdr ls) i)) ((eq? 'sexp (type-base (car ls))) - (lp (cdr ls) (+ i 1))) + (lp (cdr ls) (+ i 1) vec?)) ((<= i 3) (cat " sexp_opcode_arg" i "_type(" var ") = " (type-id-init-value (car ls)) ";\n") - (lp (cdr ls) (+ i 1))) + (lp (cdr ls) (+ i 1) vec?)) (else - (if (= i 4) + (if (not vec?) (cat " sexp_opcode_argn_type(" var ") = " "sexp_make_vector(ctx, " (make-integer (- (length (func-c-args func)) 3)) ", " @@ -1846,7 +1847,7 @@ (cat " sexp_vector_set(sexp_opcode_argn_type(" var "), " (make-integer (- i 4)) ", " (type-id-init-value (car ls)) ");\n") - (lp (cdr ls) (+ i 1)))))) + (lp (cdr ls) (+ i 1) #t))))) ;; " } else {\n" ;; " sexp_warn(ctx, \"couldn't generated opcode\", " var ");\n" " }\n")))