Fix callback tests

release
slava 2006-03-11 08:26:55 +00:00
parent 7bc7c86c56
commit 58de0364b0
2 changed files with 4 additions and 6 deletions

View File

@ -118,11 +118,11 @@ END-STRUCT
: make-foo ( x y -- foo ) : make-foo ( x y -- foo )
"foo" <c-object> [ set-foo-y ] keep [ set-foo-x ] keep ; "foo" <c-object> [ set-foo-y ] keep [ set-foo-x ] keep ;
: callback-10 : callback-14
"int" "int"
{ "foo" } { "foo" }
[ dup foo-x swap foo-y / ] alien-callback ; compiled [ dup foo-x swap foo-y / ] alien-callback ; compiled
FUNCTION: int callback_test_8 void* callback foo x ; FUNCTION: int callback_test_8 void* callback foo x ; compiled
[ 5 ] [ callback-10 10 2 make-foo callback_test_8 ] unit-test [ 5 ] [ callback-14 10 2 make-foo callback_test_8 ] unit-test

View File

@ -155,9 +155,7 @@ void unbox_value_struct(void *dest, CELL size)
/* for FFI callbacks receiving structs by value */ /* for FFI callbacks receiving structs by value */
void box_value_struct(void *src, CELL size) void box_value_struct(void *src, CELL size)
{ {
F_ARRAY *array; F_ARRAY *array = byte_array(size);
maybe_gc(0);
array = byte_array(size);
memcpy(array + 1,src,size); memcpy(array + 1,src,size);
dpush(tag_object(array)); dpush(tag_object(array));
} }