diff options
| author | 2026-10-14 16:24:55 +0330 | |
|---|---|---|
| committer | 2026-10-14 16:24:55 +0330 | |
| commit | 886fa9c0b7ad3c0316e85de1b2c87c54a3681b12 (patch) | |
| tree | c586a0d5428cbdb019b80f5a92a8ffd80c0d962d /src/lib | |
| parent | rt.zdiv: INT_MIN / -1 is INT_MIN and % is 0 in software division too, so zc0 ... (diff) | |
| parent | merge bounds checking (diff) | |
Merge branch 'main' into work/spec
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/actor.zc | 4 |
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); |
