aboutsummaryrefslogtreecommitdiff
path: root/src/lib/actor.zc
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 16:09:07 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 16:09:07 +0330
commite228e7609929763d5acddb728ba543832fcffc6a (patch)
tree9b4ecc4d46bf38e8d20234d631a6d41543daa211 /src/lib/actor.zc
parentmerge: memdebug obj_base via size classes (diff)
parentbounds checking: constant loop bound proof works, plain-op fixed-array check,... (diff)
merge bounds checking
Diffstat (limited to 'src/lib/actor.zc')
-rw-r--r--src/lib/actor.zc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/actor.zc b/src/lib/actor.zc
index 29fd600..a129f7f 100644
--- a/src/lib/actor.zc
+++ b/src/lib/actor.zc
@@ -53,11 +53,11 @@ unchecked int encode(word data, word refs, word address, word type) {
}
if (kind == 13) { n = rt.len_s(pointer); append(data, n); while (i < n) { append(data, rt.at_s(pointer, i)); i++; } return 0; }
if (kind == 7) {
- element = pointer[-1]; n = pointer[-5] - rt.HDR;
+ unbounded { element = pointer[-1]; n = pointer[-5] - rt.HDR; } // the object's header, on purpose
append(data, n); append(data, element); encode(data, refs, pointer, element); return 0;
}
element = type[4]; bytes = packed(element);
- if (rt.isobj(pointer)) n = pointer[-5] - rt.HDR;
+ if (rt.isobj(pointer)) { unbounded n = pointer[-5] - rt.HDR; }
else if (element[0] == 2) n = rt.len_w(pointer) + 1;
else n = size(element);
append(data, n);