diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-14 06:13:42 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-14 06:13:42 -0700 |
commit | f45d6da3ae0c60d4774f2ef5f7c1ea3d18ac3141 (patch) | |
tree | c558c63d7acf47320e6ccc700afa9dcb87593354 | |
parent | b244a78a159c87313ae644bbb70a732033a52ed4 (diff) | |
download | txr-f45d6da3ae0c60d4774f2ef5f7c1ea3d18ac3141.tar.gz txr-f45d6da3ae0c60d4774f2ef5f7c1ea3d18ac3141.tar.bz2 txr-f45d6da3ae0c60d4774f2ef5f7c1ea3d18ac3141.zip |
vm: bugfix: handle empty data vector.
* vm.c (vm_make_desc): We can't call vecref_l on an empty
vector, because it has no index zero. Let's use a null
location in this case.
-rw-r--r-- | vm.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -119,7 +119,8 @@ val vm_make_desc(val nlevels, val nregs, val bytecode, val datavec) { mem_t *code = buf_get(bytecode, self); - loc data_loc = vecref_l(datavec, zero); + val dvl = length_vec(datavec); + loc data_loc = if3(dvl != zero, vecref_l(datavec, zero), nulloc); struct vm_desc *vd = coerce(struct vm_desc *, chk_malloc(sizeof *vd)); val desc; |