koffi 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ChangeLog.md +6 -0
- package/package.json +2 -2
- package/src/koffi/build/2.2.1/koffi_darwin_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_darwin_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_freebsd_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_freebsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_freebsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_linux_arm32hf.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_linux_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_linux_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_linux_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_openbsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_openbsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_win32_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_win32_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.1/koffi_win32_x64.tar.gz +0 -0
- package/src/koffi/src/abi_arm32.cc +1 -0
- package/src/koffi/src/abi_arm64.cc +1 -0
- package/src/koffi/src/abi_riscv64.cc +1 -0
- package/src/koffi/src/abi_x64_sysv.cc +1 -0
- package/src/koffi/src/abi_x64_win.cc +1 -0
- package/src/koffi/src/abi_x86.cc +1 -0
- package/src/koffi/src/call.cc +2 -0
- package/src/koffi/src/ffi.cc +5 -5
- package/src/koffi/test/callbacks.js +19 -0
- package/src/koffi/test/misc.c +11 -0
- package/src/koffi/build/2.2.0/koffi_darwin_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_darwin_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_freebsd_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_freebsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_freebsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_linux_arm32hf.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_linux_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_linux_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_linux_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_openbsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_openbsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_win32_arm64.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_win32_ia32.tar.gz +0 -0
- package/src/koffi/build/2.2.0/koffi_win32_x64.tar.gz +0 -0
package/ChangeLog.md
CHANGED
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/koffi/src/abi_x86.cc
CHANGED
package/src/koffi/src/call.cc
CHANGED
package/src/koffi/src/ffi.cc
CHANGED
|
@@ -972,16 +972,16 @@ static Napi::Value GetTypeDefinition(const Napi::CallbackInfo &info)
|
|
|
972
972
|
Napi::Object members = Napi::Object::New(env);
|
|
973
973
|
|
|
974
974
|
for (const RecordMember &member: type->members) {
|
|
975
|
-
Napi::Object
|
|
975
|
+
Napi::Object obj = Napi::Object::New(env);
|
|
976
976
|
|
|
977
977
|
Napi::External<TypeInfo> external = Napi::External<TypeInfo>::New(env, (TypeInfo *)member.type);
|
|
978
978
|
SetValueTag(instance, external, &TypeInfoMarker);
|
|
979
979
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
980
|
+
obj.Set("name", member.name);
|
|
981
|
+
obj.Set("type", external);
|
|
982
|
+
obj.Set("offset", member.offset);
|
|
983
983
|
|
|
984
|
-
members.Set(member.name,
|
|
984
|
+
members.Set(member.name, obj);
|
|
985
985
|
}
|
|
986
986
|
|
|
987
987
|
defn.Set("members", members);
|
|
@@ -41,6 +41,7 @@ const ApplyCallback = koffi.callback('int __stdcall ApplyCallback(int a, int b,
|
|
|
41
41
|
const IntCallback = koffi.callback('int IntCallback(int x)');
|
|
42
42
|
const VectorCallback = koffi.callback('int VectorCallback(int len, Vec2 *vec)');
|
|
43
43
|
const SortCallback = koffi.callback('int SortCallback(const void *ptr1, const void *ptr2)');
|
|
44
|
+
const CharCallback = koffi.callback('int CharCallback(int idx, char c)');
|
|
44
45
|
|
|
45
46
|
const StructCallbacks = koffi.struct('StructCallbacks', {
|
|
46
47
|
first: koffi.pointer(IntCallback),
|
|
@@ -75,6 +76,8 @@ async function test() {
|
|
|
75
76
|
const CallCallback = lib.func('int CallCallback(int x)');
|
|
76
77
|
const MakeVectors = lib.func('int MakeVectors(int len, VectorCallback *func)');
|
|
77
78
|
const CallQSort = lib.func('void CallQSort(_Inout_ void *base, size_t nmemb, size_t size, SortCallback *cb)');
|
|
79
|
+
const CallMeChar = lib.func('int CallMeChar(CharCallback *func)');
|
|
80
|
+
const GetMinusOne1 = lib.func('int8_t GetMinusOne1(void)');
|
|
78
81
|
|
|
79
82
|
// Simple test similar to README example
|
|
80
83
|
{
|
|
@@ -230,4 +233,20 @@ async function test() {
|
|
|
230
233
|
|
|
231
234
|
assert.deepEqual(array, ['123', 'bar', 'foo', 'foobar']);
|
|
232
235
|
}
|
|
236
|
+
|
|
237
|
+
// Make sure thread local CallData is restored after nested call inside callback
|
|
238
|
+
// Regression test for issue #15
|
|
239
|
+
{
|
|
240
|
+
let chars = [97, 98];
|
|
241
|
+
|
|
242
|
+
let cb = koffi.register((idx, c) => {
|
|
243
|
+
assert.equal(GetMinusOne1(), -1);
|
|
244
|
+
assert.equal(c, chars[idx]);
|
|
245
|
+
|
|
246
|
+
return c;
|
|
247
|
+
}, 'CharCallback *');
|
|
248
|
+
|
|
249
|
+
let ret = CallMeChar(cb);
|
|
250
|
+
assert.equal(ret, 97 + 98);
|
|
251
|
+
}
|
|
233
252
|
}
|
package/src/koffi/test/misc.c
CHANGED
|
@@ -169,6 +169,7 @@ typedef struct Vec2 {
|
|
|
169
169
|
|
|
170
170
|
typedef int VectorCallback(int len, Vec2 *vec);
|
|
171
171
|
typedef int SortCallback(const void *ptr1, const void *ptr2);
|
|
172
|
+
typedef int CharCallback(int idx, char c);
|
|
172
173
|
|
|
173
174
|
EXPORT int8_t GetMinusOne1(void)
|
|
174
175
|
{
|
|
@@ -776,3 +777,13 @@ EXPORT void CallQSort(void *base, size_t nmemb, size_t size, SortCallback *cb)
|
|
|
776
777
|
{
|
|
777
778
|
qsort(base, nmemb, size, cb);
|
|
778
779
|
}
|
|
780
|
+
|
|
781
|
+
EXPORT int CallMeChar(CharCallback *func)
|
|
782
|
+
{
|
|
783
|
+
int ret = 0;
|
|
784
|
+
|
|
785
|
+
ret += func(0, 'a');
|
|
786
|
+
ret += func(1, 'b');
|
|
787
|
+
|
|
788
|
+
return ret;
|
|
789
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|