Skip to content

Commit f8e8d55

Browse files
committed
Fix pointer allocation handles
1 parent 5fcfbb0 commit f8e8d55

File tree

2 files changed

+5
-34
lines changed

2 files changed

+5
-34
lines changed

NativeScript/ffi/Interop.mm

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -970,22 +970,7 @@ napi_value interop_alloc(napi_env env, napi_callback_info info) {
970970
napi_get_value_int64(env, arg, &size);
971971

972972
void* data = malloc(size);
973-
974-
napi_value PointerClass = get_ref_value(env, ObjCBridgeState::InstanceData(env)->pointerClass);
975-
napi_value result;
976-
napi_new_instance(env, PointerClass, 0, nullptr, &result);
977-
978-
Pointer* ptr = nullptr;
979-
napi_unwrap(env, result, (void**)&ptr);
980-
981-
if (ptr == nullptr) {
982-
napi_throw_error(env, nullptr, "Invalid pointer");
983-
return nullptr;
984-
}
985-
986-
ptr->data = data;
987-
988-
return result;
973+
return Pointer::create(env, data);
989974
}
990975

991976
napi_value interop_handleof(napi_env env, napi_callback_info info) {
@@ -1190,20 +1175,15 @@ napi_value interop_bufferFromData(napi_env env, napi_callback_info info) {
11901175

11911176
ObjCBridgeState* bridgeState = ObjCBridgeState::InstanceData(env);
11921177
napi_value jsPointer = get_ref_value(env, bridgeState->pointerClass);
1178+
napi_value argv[1];
1179+
napi_create_bigint_uint64(env, static_cast<uint64_t>(reinterpret_cast<uintptr_t>(data)),
1180+
&argv[0]);
11931181
napi_value result;
1194-
napi_status status = napi_new_instance(env, jsPointer, 0, nullptr, &result);
1182+
napi_status status = napi_new_instance(env, jsPointer, 1, argv, &result);
11951183

11961184
if (status != napi_ok) {
11971185
return nullptr;
11981186
}
1199-
1200-
Pointer* ptr = Pointer::unwrap(env, result);
1201-
if (ptr == nullptr) {
1202-
return nullptr;
1203-
}
1204-
1205-
ptr->data = data;
1206-
cachePointer(env, data, result);
12071187
return result;
12081188
}
12091189

TestRunner/app/tests/Marshalling/ReferenceTests.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -844,23 +844,14 @@ describe(module.id, function () {
844844
let stringToHash = "bla";
845845

846846
const bytesToAlloc = 32;
847-
console.log("[diag][ReferenceAccessor] start");
848847
const result = interop.alloc(bytesToAlloc);
849-
console.log("[diag][ReferenceAccessor] allocated", result.toString());
850848
CC_SHA256(interop.handleof(NSString.stringWithString(stringToHash).UTF8String), stringToHash.length, result);
851-
console.log("[diag][ReferenceAccessor] sha complete");
852849
let buffer = new interop.Reference(interop.types.uint8, result);
853-
console.log("[diag][ReferenceAccessor] buffer ready");
854850

855851
let actual = "";
856852
for (let i = 0; i < bytesToAlloc; i++) {
857853
actual += buffer[i].toString(16).padStart(2, "0");
858-
if ((i + 1) % 8 === 0) {
859-
console.log("[diag][ReferenceAccessor] bytes", i + 1, actual);
860-
}
861854
}
862-
863-
console.log("[diag][ReferenceAccessor] final", actual);
864855
expect(actual).toBe("4df3c3f68fcc83b27e9d42c90431a72499f17875c81a599b566c9889b9696703");
865856
});
866857
});

0 commit comments

Comments
 (0)