summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-05-20 07:30:27 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-05-20 07:30:27 -0700
commita9088e532b482afa7c8a25ffda071e20172a36fe (patch)
tree561d2081b6af0363421e68f534b72b07baf96356
parent4b949beae1a22e2e4f9d9a61502754ae1bcfbd70 (diff)
downloadtxr-a9088e532b482afa7c8a25ffda071e20172a36fe.tar.gz
txr-a9088e532b482afa7c8a25ffda071e20172a36fe.tar.bz2
txr-a9088e532b482afa7c8a25ffda071e20172a36fe.zip
ffi: diagnose carray of incomplete type.
* ffi.c (carray_buf): Do not allow an element type with zero size; throw an exception.
-rw-r--r--ffi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ffi.c b/ffi.c
index c8819faf..6dfd663c 100644
--- a/ffi.c
+++ b/ffi.c
@@ -2612,6 +2612,10 @@ val carray_buf(val buf, val type)
cnum blen = c_num(length_buf(buf));
struct txr_ffi_type *tft = ffi_type_struct(type);
cnum nelem = if3(tft->size, blen / tft->size, 0);
+ if (tft->size == 0)
+ uw_throwf(error_s,
+ lit("~a: incomplete type ~s cannot be carray element"),
+ self, tft->syntax, nao);
return make_carray(type, data, nelem, buf);
}