mirror of
https://github.com/janet-lang/janet
synced 2025-09-12 07:46:09 +00:00
Don't error on empty struct.
This commit is contained in:
@@ -424,6 +424,7 @@ static JanetFFIStruct *build_struct_type(int32_t argc, const Janet *argv) {
|
|||||||
st->size += (uint32_t) el_size;
|
st->size += (uint32_t) el_size;
|
||||||
} else {
|
} else {
|
||||||
if (el_align > st->align) st->align = (uint32_t) el_align;
|
if (el_align > st->align) st->align = (uint32_t) el_align;
|
||||||
|
if (el_align <= 0) el_align = 1;
|
||||||
st->fields[i].offset = (uint32_t)(((st->size + el_align - 1) / el_align) * el_align);
|
st->fields[i].offset = (uint32_t)(((st->size + el_align - 1) / el_align) * el_align);
|
||||||
st->size = (uint32_t)(el_size + st->fields[i].offset);
|
st->size = (uint32_t)(el_size + st->fields[i].offset);
|
||||||
}
|
}
|
||||||
|
@@ -52,5 +52,10 @@
|
|||||||
(assert (= 26 (ffi/size [:char :pack :int @[:char 21]]))
|
(assert (= 26 (ffi/size [:char :pack :int @[:char 21]]))
|
||||||
"array struct size"))
|
"array struct size"))
|
||||||
|
|
||||||
(end-suite)
|
(compwhen has-ffi
|
||||||
|
(assert-no-error "bad struct issue #1512" (ffi/struct :void))
|
||||||
|
(def s (ffi/struct :void))
|
||||||
|
(assert (= 0 (ffi/size s)))
|
||||||
|
(assert (= 1 (ffi/align s))))
|
||||||
|
|
||||||
|
(end-suite)
|
||||||
|
Reference in New Issue
Block a user