parsav  Diff

Differences From Artifact [4c9f723184]:

To Artifact [5f40c98144]:


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
end
m.codestr = terra(code: uint16)
	var [resptext] var [resplen]
	switch code do [respbranches] end
	return resptext, resplen
end

terra m.hier(uri: lib.mem.ptr(int8)): lib.mem.ptr(lib.mem.ref(int8))
	if uri.ct == 0 then return [lib.mem.ptr(lib.mem.ref(int8))] { ptr = nil, ct = 0 } end
	var sz = 1
	var start = 0 if uri.ptr[0] == @'/' then start = 1 end
	for i = start, uri.ct do if uri.ptr[i] == @'/' then sz = sz + 1 end end
	var lst = lib.mem.heapa([lib.mem.ref(int8)], sz)
	if sz == 0 then
		lst.ptr[0].ptr = uri.ptr
		lst.ptr[0].ct = uri.ct
		return lst
	end

	var idx: intptr = 0







|




|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
end
m.codestr = terra(code: uint16)
	var [resptext] var [resplen]
	switch code do [respbranches] end
	return resptext, resplen
end

terra m.hier(pool: &lib.mem.pool, uri: lib.mem.ptr(int8)): lib.mem.ptr(lib.mem.ref(int8))
	if uri.ct == 0 then return [lib.mem.ptr(lib.mem.ref(int8))] { ptr = nil, ct = 0 } end
	var sz = 1
	var start = 0 if uri.ptr[0] == @'/' then start = 1 end
	for i = start, uri.ct do if uri.ptr[i] == @'/' then sz = sz + 1 end end
	var lst = pool:alloc([lib.mem.ref(int8)], sz)
	if sz == 0 then
		lst.ptr[0].ptr = uri.ptr
		lst.ptr[0].ct = uri.ct
		return lst
	end

	var idx: intptr = 0