diff --git a/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc b/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc index aa566ce88fe..a66574162f2 100644 --- a/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc +++ b/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc @@ -617,6 +617,10 @@ DART_EXPORT void ExecuteCallback(Work* work_ptr) { Dart_Port send_port_; +DART_EXPORT void* Calloc(size_t count, size_t size) { + return calloc(count, size); +} + DART_EXPORT void FreeFinalizer(void*, void* value) { free(value); } diff --git a/tests/ffi/deeply_immutable_c_api_finalizer_test.dart b/tests/ffi/deeply_immutable_c_api_finalizer_test.dart index 7d031a9051d..de1e9c9961b 100644 --- a/tests/ffi/deeply_immutable_c_api_finalizer_test.dart +++ b/tests/ffi/deeply_immutable_c_api_finalizer_test.dart @@ -28,7 +28,7 @@ final class MyFinalizable implements Finalizable { MyFinalizable._(this.pointer); factory MyFinalizable() { - final pointer = calloc(10); + final pointer = calloc(sizeOf(), 10).cast(); pointer.value = 123; final result = MyFinalizable._(pointer); newFinalizableHandle( @@ -41,6 +41,10 @@ final class MyFinalizable implements Finalizable { } } +final calloc = dlopenPlatformSpecific("ffi_test_functions") + .lookup Function(Size, Size)>>('Calloc') + .asFunction Function(int, int)>(); + final freeFinalizer = dlopenPlatformSpecific("ffi_test_functions") .lookup>('FreeFinalizer');