summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-05-18 20:11:55 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-05-18 20:11:55 -0700
commit9bb817c2beac1baf40a9d022db350fc83a453da2 (patch)
tree13b708a26dfd586dfcf580c6f5d7a941a0a03742
parent5b3e080091e1bf9bca2fd6e3995da6424a350f62 (diff)
downloadtxr-9bb817c2beac1baf40a9d022db350fc83a453da2.tar.gz
txr-9bb817c2beac1baf40a9d022db350fc83a453da2.tar.bz2
txr-9bb817c2beac1baf40a9d022db350fc83a453da2.zip
ffi: carray-free resets length.
* ffi.c (carray_free): Don't just reset the pointer to null, but also set the number of elements to zero. That will prevent indexing operations from dereferencing null.
-rw-r--r--ffi.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ffi.c b/ffi.c
index 693c700f..e5f70b3e 100644
--- a/ffi.c
+++ b/ffi.c
@@ -2379,6 +2379,7 @@ val carray_free(val carray)
if (carray->co.ops == &carray_owned_ops) {
free(scry->data);
scry->data = 0;
+ scry->nelem = 0;
} else {
uw_throwf(error_s, lit("~a: cannot free unowned carray ~s"),
self, carray, nao);