1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-13 06:43:42 +00:00

Fixed FFI interop signed/unsigned problem

This commit is contained in:
Bryan Roe
2020-05-25 16:45:27 -07:00
parent b47af8bb4b
commit aa1460ab04

View File

@@ -33,11 +33,7 @@ limitations under the License.
#include <pthread.h> #include <pthread.h>
#endif #endif
#if defined(_WIN64) || defined(__LP64__) typedef uintptr_t PTRSIZE;
typedef uint_fast64_t PTRSIZE;
#else
typedef uint_fast32_t PTRSIZE;
#endif
#ifdef WIN32 #ifdef WIN32
#define APICALLTYPE __stdcall #define APICALLTYPE __stdcall
@@ -1209,7 +1205,7 @@ duk_ret_t ILibDuktape_GenericMarshal_MethodInvokeAsync(duk_context *ctx)
} }
else if (duk_is_number(ctx, i)) else if (duk_is_number(ctx, i))
{ {
data->vars[i] = (PTRSIZE)duk_require_int(ctx, i); data->vars[i] = (uintptr_t)(duk_require_uint(ctx, i) == 0 ? duk_require_int(ctx, i) : duk_require_uint(ctx, i));
} }
else if (duk_is_pointer(ctx, i)) else if (duk_is_pointer(ctx, i))
{ {
@@ -1320,7 +1316,7 @@ duk_ret_t ILibDuktape_GenericMarshal_MethodInvoke(duk_context *ctx)
} }
else if (duk_is_number(ctx, i)) else if (duk_is_number(ctx, i))
{ {
vars[i] = (PTRSIZE)duk_require_int(ctx, i); vars[i] = (uintptr_t)(duk_require_uint(ctx, i) == 0 ? duk_require_int(ctx, i) : duk_require_uint(ctx, i));
} }
else if (duk_is_pointer(ctx, i)) else if (duk_is_pointer(ctx, i))
{ {