diff --git a/basis/struct-arrays/struct-arrays-tests.factor b/basis/struct-arrays/struct-arrays-tests.factor index d2bf583b5a..6f77e66cd2 100755 --- a/basis/struct-arrays/struct-arrays-tests.factor +++ b/basis/struct-arrays/struct-arrays-tests.factor @@ -1,6 +1,7 @@ IN: struct-arrays.tests USING: struct-arrays tools.test kernel math sequences -alien.syntax alien.c-types destructors libc accessors ; +alien.syntax alien.c-types destructors libc accessors +destructors ; C-STRUCT: test-struct { "int" "x" } @@ -27,3 +28,12 @@ C-STRUCT: test-struct 0 [ [ test-struct-x ] [ test-struct-y ] bi / + ] reduce ] with-destructors ] unit-test + +[ ] [ ALIEN: 123 10 "test-struct" drop ] unit-test + +[ ] [ + [ + 10 "test-struct" malloc-struct-array + underlying>> &free drop + ] with-destructors +] unit-test \ No newline at end of file diff --git a/basis/struct-arrays/struct-arrays.factor b/basis/struct-arrays/struct-arrays.factor index 33a469d0c8..ba0524009f 100755 --- a/basis/struct-arrays/struct-arrays.factor +++ b/basis/struct-arrays/struct-arrays.factor @@ -32,9 +32,9 @@ ERROR: bad-byte-array-length byte-array ; ] keep struct-array boa ; inline : ( alien length c-type -- struct-array ) - struct-array boa ; inline + heap-size struct-array boa ; inline : malloc-struct-array ( length c-type -- struct-array ) - heap-size [ calloc ] 2keep ; + [ heap-size calloc ] 2keep ; INSTANCE: struct-array sequence