mini_vm: handle empty function arguments in collect_prints

This commit is contained in:
moe-charm
2025-09-23 02:01:56 +09:00
parent 6e6dc9ebe3
commit 75f4eac785

View File

@ -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)