parsav  Diff

Differences From Artifact [4c9f723184]:

To Artifact [5f40c98144]:


    59     59   end
    60     60   m.codestr = terra(code: uint16)
    61     61   	var [resptext] var [resplen]
    62     62   	switch code do [respbranches] end
    63     63   	return resptext, resplen
    64     64   end
    65     65   
    66         -terra m.hier(uri: lib.mem.ptr(int8)): lib.mem.ptr(lib.mem.ref(int8))
           66  +terra m.hier(pool: &lib.mem.pool, uri: lib.mem.ptr(int8)): lib.mem.ptr(lib.mem.ref(int8))
    67     67   	if uri.ct == 0 then return [lib.mem.ptr(lib.mem.ref(int8))] { ptr = nil, ct = 0 } end
    68     68   	var sz = 1
    69     69   	var start = 0 if uri.ptr[0] == @'/' then start = 1 end
    70     70   	for i = start, uri.ct do if uri.ptr[i] == @'/' then sz = sz + 1 end end
    71         -	var lst = lib.mem.heapa([lib.mem.ref(int8)], sz)
           71  +	var lst = pool:alloc([lib.mem.ref(int8)], sz)
    72     72   	if sz == 0 then
    73     73   		lst.ptr[0].ptr = uri.ptr
    74     74   		lst.ptr[0].ct = uri.ct
    75     75   		return lst
    76     76   	end
    77     77   
    78     78   	var idx: intptr = 0