From 75f4eac7856895462203c355b64b4d72090d9487 Mon Sep 17 00:00:00 2001 From: moe-charm Date: Tue, 23 Sep 2025 02:01:56 +0900 Subject: [PATCH] mini_vm: handle empty function arguments in collect_prints --- apps/selfhost/vm/boxes/mini_vm_core.nyash | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/selfhost/vm/boxes/mini_vm_core.nyash b/apps/selfhost/vm/boxes/mini_vm_core.nyash index c5bfdb34..39e2fd2b 100644 --- a/apps/selfhost/vm/boxes/mini_vm_core.nyash +++ b/apps/selfhost/vm/boxes/mini_vm_core.nyash @@ -593,18 +593,24 @@ static box MiniVm { local fname = json.substring(ni, nj) local ka = "\"arguments\":[" local ap = index_of_from(json, ka, nj) - if ap > 0 { if ap < expr_end { + if ap <= 0 { + local ka0 = "\"arguments\":" + local ap0 = index_of_from(json, ka0, nj) + if ap0 >= 0 { if ap0 < expr_end { ap = ap0 } } + } + if ap >= 0 { if ap < expr_end { // detect empty args [] quickly: no type token inside balanced array local arr_start = index_of_from(json, "[", ap) - local arr_end = new MiniVmScan().find_balanced_array_end(json, arr_start) - if arr_start >= 0 { if arr_end >= 0 { if arr_end <= expr_end { + if arr_start >= 0 { if arr_start < expr_end { + local arr_end = new MiniVmScan().find_balanced_array_end(json, arr_start) + if arr_end >= 0 { if arr_end <= expr_end { local kt = "\"type\":\"" local atpos = index_of_from(json, kt, arr_start) if atpos < 0 || atpos >= arr_end { if fname == "echo" { out.push("") pos = obj_end + 1 continue } if fname == "itoa" { out.push("0") pos = obj_end + 1 continue } } - }}} + }}}} // string arg local ks = "\"type\":\"string\",\"value\":\"" local ps = index_of_from(json, ks, ap)