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 | 00324bcd1ec8d987cf9c8a1637cc68f1ddc0ea04 (patch) | |
tree | c558c63d7acf47320e6ccc700afa9dcb87593354 | |
parent | 25e75c04fd7efe85b40297101657ee856eac81c3 (diff) | |
download | txr-00324bcd1ec8d987cf9c8a1637cc68f1ddc0ea04.tar.gz txr-00324bcd1ec8d987cf9c8a1637cc68f1ddc0ea04.tar.bz2 txr-00324bcd1ec8d987cf9c8a1637cc68f1ddc0ea04.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; |