diff --git a/basis/alien/data/data.factor b/basis/alien/data/data.factor index d755ac387b..52ccf6f6d1 100644 --- a/basis/alien/data/data.factor +++ b/basis/alien/data/data.factor @@ -22,16 +22,25 @@ GENERIC: ( len c-type -- array ) M: word c-array-constructor execute( len -- array ) ; inline +M: pointer + drop void* ; + GENERIC: (c-array) ( len c-type -- array ) M: word (c-array) c-(array)-constructor execute( len -- array ) ; inline +M: pointer (c-array) + drop void* (c-array) ; + GENERIC: ( alien len c-type -- array ) M: word c-direct-array-constructor execute( alien len -- array ) ; inline +M: pointer + drop void* ; + : malloc-array ( n type -- array ) [ heap-size calloc ] [ ] 2bi ; inline diff --git a/basis/classes/struct/struct-tests.factor b/basis/classes/struct/struct-tests.factor index b42684806b..90f60a4205 100644 --- a/basis/classes/struct/struct-tests.factor +++ b/basis/classes/struct/struct-tests.factor @@ -476,3 +476,9 @@ CONSULT: struct-test-delegate struct-test-delegator del>> ; 7 >>a 8 >>b ] unit-test + +SPECIALIZED-ARRAY: void* + +STRUCT: silly-array-field-test { x int*[3] } ; + +[ t ] [ silly-array-field-test x>> void*-array? ] unit-test