summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2023-04-27 16:58:21 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-04 14:58:51 -0400
commit2d5c1ddecf195da9a8ee4f7b38fbb79d3b680aeb (patch)
tree6e9ac73ed4cc48a196f2eefb313ab7fcafd0e28b /libraries
parent116d7312ec4c76f75a26bd0ad2b2815710049e0e (diff)
downloadhaskell-2d5c1ddecf195da9a8ee4f7b38fbb79d3b680aeb.tar.gz
Fix remaining issues with bound checking (#23123)
While fixing these I've also changed the way we store addresses into ByteArray#. Addr# are composed of two parts: a JavaScript array and an offset (32-bit number). Suppose we want to store an Addr# in a ByteArray# foo at offset i. Before this patch, we were storing both fields as a tuple in the "arr" array field: foo.arr[i] = [addr_arr, addr_offset]; Now we only store the array part in the "arr" field and the offset directly in the array: foo.dv.setInt32(i, addr_offset): foo.arr[i] = addr_arr; It avoids wasting space for the tuple.
Diffstat (limited to 'libraries')
-rw-r--r--libraries/base/jsbits/base.js3
1 files changed, 1 insertions, 2 deletions
diff --git a/libraries/base/jsbits/base.js b/libraries/base/jsbits/base.js
index 46434298c0..3de5d9daff 100644
--- a/libraries/base/jsbits/base.js
+++ b/libraries/base/jsbits/base.js
@@ -878,8 +878,7 @@ function h$__hscore_readdir(d,o,dst_a,dst_o) {
}
const e = d.readSync();
- if (!dst_a.arr) dst_a.arr = [];
- dst_a.arr[dst_o*2] = [e,0];
+ PUT_ADDR(dst_a,dst_o*2,e,0);
return 0;
}