diff --git a/.gitignore b/.gitignore index 4596fdf409..8959be02f1 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ pharo-vm/ ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +#vscode +.vscode/ + # User-specific files *.rsuser *.suo @@ -367,4 +370,4 @@ healthchecksdb /stack32/generated /stack64/generated -**/.DS_Store \ No newline at end of file +**/.DS_Store diff --git a/extracted/plugins/B2DPlugin/src/common/B2DPlugin.c b/extracted/plugins/B2DPlugin/src/common/B2DPlugin.c index 5261feff4e..843e11b8f1 100644 --- a/extracted/plugins/B2DPlugin/src/common/B2DPlugin.c +++ b/extracted/plugins/B2DPlugin/src/common/B2DPlugin.c @@ -764,7 +764,7 @@ static sqInt (*makePointwithxValueyValue)(sqInt xValue, sqInt yValue); static sqInt (*methodArgumentCount)(void); static sqInt (*nilObject)(void); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*popRemappableOop)(void); static sqInt (*positive32BitIntegerFor)(unsigned int integerValue); static usqInt (*positive32BitValueOf)(sqInt oop); @@ -772,7 +772,7 @@ static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); static sqInt (*pushBool)(sqInt trueOrFalse); static sqInt (*pushInteger)(sqInt integerValue); -static sqInt (*pushRemappableOop)(sqInt oop); +static void (*pushRemappableOop)(sqInt oop); static sqInt (*slotSizeOf)(sqInt oop); static sqInt (*stackIntegerValue)(sqInt offset); static sqInt (*stackObjectValue)(sqInt offset); @@ -813,7 +813,7 @@ extern sqInt makePointwithxValueyValue(sqInt xValue, sqInt yValue); extern sqInt methodArgumentCount(void); extern sqInt nilObject(void); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt popRemappableOop(void); extern sqInt positive32BitIntegerFor(unsigned int integerValue); extern usqInt positive32BitValueOf(sqInt oop); @@ -821,7 +821,7 @@ extern sqInt primitiveFail(void); extern sqInt primitiveFailFor(sqInt reasonCode); extern sqInt pushBool(sqInt trueOrFalse); extern sqInt pushInteger(sqInt integerValue); -extern sqInt pushRemappableOop(sqInt oop); +extern void pushRemappableOop(sqInt oop); extern sqInt slotSizeOf(sqInt oop); extern sqInt stackIntegerValue(sqInt offset); extern sqInt stackObjectValue(sqInt offset); diff --git a/extracted/plugins/BitBltPlugin/src/common/BitBltPlugin.c b/extracted/plugins/BitBltPlugin/src/common/BitBltPlugin.c index 8c2698e0cc..bd4683f5e9 100644 --- a/extracted/plugins/BitBltPlugin/src/common/BitBltPlugin.c +++ b/extracted/plugins/BitBltPlugin/src/common/BitBltPlugin.c @@ -287,7 +287,7 @@ static sqInt (*methodReturnInteger)(sqInt integer); static sqInt (*methodReturnReceiver)(void); static sqInt (*nilObject)(void); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*positive32BitIntegerFor)(unsigned int integerValue); static usqInt (*positive32BitValueOf)(sqInt oop); static usqLong (*positive64BitValueOf)(sqInt oop); @@ -329,7 +329,7 @@ extern sqInt methodReturnInteger(sqInt integer); extern sqInt methodReturnReceiver(void); extern sqInt nilObject(void); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt positive32BitIntegerFor(unsigned int integerValue); extern usqInt positive32BitValueOf(sqInt oop); extern usqLong positive64BitValueOf(sqInt oop); diff --git a/extracted/plugins/FileAttributesPlugin/src/common/FileAttributesPlugin.c b/extracted/plugins/FileAttributesPlugin/src/common/FileAttributesPlugin.c index c7393ee3f7..94936d3dea 100644 --- a/extracted/plugins/FileAttributesPlugin/src/common/FileAttributesPlugin.c +++ b/extracted/plugins/FileAttributesPlugin/src/common/FileAttributesPlugin.c @@ -121,14 +121,14 @@ static sqInt (*isKindOf)(sqInt oop, char *aString); static sqInt (*isBytes)(sqInt oop); static sqInt (*methodReturnValue)(sqInt oop); static sqInt (*nilObject)(void); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*popRemappableOop)(void); static sqInt (*positive32BitIntegerFor)(unsigned int integerValue); static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); static sqInt (*primitiveFailForOSError)(sqLong osError); static sqInt (*primitiveFailureCode)(void); -static sqInt (*pushRemappableOop)(sqInt oop); +static void (*pushRemappableOop)(sqInt oop); static sqInt (*stSizeOf)(sqInt oop); static sqInt (*stackIntegerValue)(sqInt offset); static sqInt (*stackObjectValue)(sqInt offset); @@ -147,7 +147,7 @@ extern sqInt isKindOf(sqInt oop, char *aString); extern sqInt isBytes(sqInt oop); extern sqInt methodReturnValue(sqInt oop); extern sqInt nilObject(void); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt popRemappableOop(void); extern sqInt positive32BitIntegerFor(unsigned int integerValue); extern sqInt primitiveFail(void); @@ -158,7 +158,7 @@ extern sqInt primitiveFailForOSError(sqLong osError); # define primitiveFailForOSError(osError) 0 #endif extern sqInt primitiveFailureCode(void); -extern sqInt pushRemappableOop(sqInt oop); +extern void pushRemappableOop(sqInt oop); extern sqInt stSizeOf(sqInt oop); extern sqInt stackIntegerValue(sqInt offset); extern sqInt stackObjectValue(sqInt offset); @@ -712,7 +712,8 @@ primitiveLogicalDrives(void) # if defined(_WIN32) mask = GetLogicalDrives(); if (mask != 0) { - return popthenPush(1, positive32BitIntegerFor(mask)); + popthenPush(1, positive32BitIntegerFor(mask)); + return 0; } # endif /* defined(_WIN32) */ primitiveFail(); @@ -813,7 +814,8 @@ primitiveOpendir(void) EXPORT(sqInt) primitivePathMax(void) { - return popthenPush(1, integerObjectOf(FA_PATH_MAX)); + popthenPush(1, integerObjectOf(FA_PATH_MAX)); + return 0; } diff --git a/extracted/plugins/JPEGReadWriter2Plugin/src/common/JPEGReadWriter2Plugin.c b/extracted/plugins/JPEGReadWriter2Plugin/src/common/JPEGReadWriter2Plugin.c index 6c4b570974..bb9e1550ff 100644 --- a/extracted/plugins/JPEGReadWriter2Plugin/src/common/JPEGReadWriter2Plugin.c +++ b/extracted/plugins/JPEGReadWriter2Plugin/src/common/JPEGReadWriter2Plugin.c @@ -72,7 +72,7 @@ static sqInt (*isBytes)(sqInt oop); static sqInt (*isIntegerObject)(sqInt objectPointer); static sqInt (*isWordsOrBytes)(sqInt oop); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); static sqInt (*stSizeOf)(sqInt oop); @@ -101,7 +101,7 @@ extern sqInt isIntegerObject(sqInt objectPointer); #endif extern sqInt isWordsOrBytes(sqInt oop); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt primitiveFail(void); extern sqInt primitiveFailFor(sqInt reasonCode); extern sqInt stSizeOf(sqInt oop); diff --git a/extracted/plugins/LargeIntegers/src/common/LargeIntegers.c b/extracted/plugins/LargeIntegers/src/common/LargeIntegers.c index dd427ccc9b..5bac5ba9af 100644 --- a/extracted/plugins/LargeIntegers/src/common/LargeIntegers.c +++ b/extracted/plugins/LargeIntegers/src/common/LargeIntegers.c @@ -117,12 +117,12 @@ static sqInt (*integerObjectOf)(sqInt value); static sqInt (*integerValueOf)(sqInt oop); static sqInt (*isBooleanObject)(sqInt oop); static sqInt (*isIntegerObject)(sqInt objectPointer); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*popRemappableOop)(void); static usqInt (*positive32BitValueOf)(sqInt oop); static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); -static sqInt (*pushRemappableOop)(sqInt oop); +static void (*pushRemappableOop)(sqInt oop); static sqInt (*slotSizeOf)(sqInt oop); static sqInt (*stObjectatput)(sqInt array, sqInt index, sqInt value); static sqInt (*stackIntegerValue)(sqInt offset); @@ -150,12 +150,12 @@ extern sqInt isBooleanObject(sqInt oop); #if !defined(isIntegerObject) extern sqInt isIntegerObject(sqInt objectPointer); #endif -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt popRemappableOop(void); extern usqInt positive32BitValueOf(sqInt oop); extern sqInt primitiveFail(void); extern sqInt primitiveFailFor(sqInt reasonCode); -extern sqInt pushRemappableOop(sqInt oop); +extern void pushRemappableOop(sqInt oop); extern sqInt slotSizeOf(sqInt oop); extern sqInt stObjectatput(sqInt array, sqInt index, sqInt value); extern sqInt stackIntegerValue(sqInt offset); diff --git a/extracted/plugins/LocalePlugin/src/common/LocalePlugin.c b/extracted/plugins/LocalePlugin/src/common/LocalePlugin.c index 96b5f33307..6a697c2d77 100644 --- a/extracted/plugins/LocalePlugin/src/common/LocalePlugin.c +++ b/extracted/plugins/LocalePlugin/src/common/LocalePlugin.c @@ -63,7 +63,7 @@ static sqInt (*falseObject)(void); static void * (*firstIndexableField)(sqInt oop); static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size); static sqInt (*integerObjectOf)(sqInt value); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*trueObject)(void); #else /* !defined(SQUEAK_BUILTIN_PLUGIN) */ extern sqInt classString(void); @@ -72,7 +72,7 @@ extern sqInt falseObject(void); extern void * firstIndexableField(sqInt oop); extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size); extern sqInt integerObjectOf(sqInt value); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt trueObject(void); extern #endif diff --git a/extracted/plugins/SocketPlugin/src/common/SocketPlugin.c b/extracted/plugins/SocketPlugin/src/common/SocketPlugin.c index f8ed75a128..883c1a8b89 100644 --- a/extracted/plugins/SocketPlugin/src/common/SocketPlugin.c +++ b/extracted/plugins/SocketPlugin/src/common/SocketPlugin.c @@ -130,11 +130,11 @@ static sqInt (*isWords)(sqInt oop); static sqInt (*isWordsOrBytes)(sqInt oop); static sqInt (*methodArgumentCount)(void); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*popRemappableOop)(void); static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); -static sqInt (*pushRemappableOop)(sqInt oop); +static void (*pushRemappableOop)(sqInt oop); static sqInt (*slotSizeOf)(sqInt oop); static sqInt (*stackIntegerValue)(sqInt offset); static sqInt (*stackValue)(sqInt offset); @@ -160,11 +160,11 @@ extern sqInt isWords(sqInt oop); extern sqInt isWordsOrBytes(sqInt oop); extern sqInt methodArgumentCount(void); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt popRemappableOop(void); extern sqInt primitiveFail(void); extern sqInt primitiveFailFor(sqInt reasonCode); -extern sqInt pushRemappableOop(sqInt oop); +extern void pushRemappableOop(sqInt oop); extern sqInt slotSizeOf(sqInt oop); extern sqInt stackIntegerValue(sqInt offset); extern sqInt stackValue(sqInt offset); diff --git a/extracted/plugins/SqueakSSL/src/common/SqueakSSL.c b/extracted/plugins/SqueakSSL/src/common/SqueakSSL.c index ddb2bc024e..04dde31c21 100644 --- a/extracted/plugins/SqueakSSL/src/common/SqueakSSL.c +++ b/extracted/plugins/SqueakSSL/src/common/SqueakSSL.c @@ -61,7 +61,7 @@ static sqInt (*isBytes)(sqInt oop); static sqInt (*methodArgumentCount)(void); static sqInt (*nilObject)(void); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*primitiveFail)(void); static sqInt (*pushInteger)(sqInt integerValue); static sqInt (*signed32BitIntegerFor)(sqInt integerValue); @@ -78,7 +78,7 @@ extern sqInt isBytes(sqInt oop); extern sqInt methodArgumentCount(void); extern sqInt nilObject(void); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt primitiveFail(void); extern sqInt pushInteger(sqInt integerValue); extern sqInt signed32BitIntegerFor(sqInt integerValue); diff --git a/extracted/plugins/UnixOSProcessPlugin/src/common/UnixOSProcessPlugin.c b/extracted/plugins/UnixOSProcessPlugin/src/common/UnixOSProcessPlugin.c index 2e22dd9d65..788e9a1788 100644 --- a/extracted/plugins/UnixOSProcessPlugin/src/common/UnixOSProcessPlugin.c +++ b/extracted/plugins/UnixOSProcessPlugin/src/common/UnixOSProcessPlugin.c @@ -277,13 +277,13 @@ static sqInt (*methodArgumentCount)(void); static sqInt (*methodReturnValue)(sqInt oop); static sqInt (*nilObject)(void); static sqInt (*pop)(sqInt nItems); -static sqInt (*popthenPush)(sqInt nItems, sqInt oop); +static void (*popthenPush)(sqInt nItems, sqInt oop); static sqInt (*popRemappableOop)(void); static sqInt (*primitiveFail)(void); static sqInt (*primitiveFailFor)(sqInt reasonCode); -static (*push)(sqInt object); +static void (*push)(sqInt object); static sqInt (*pushInteger)(sqInt integerValue); -static sqInt (*pushRemappableOop)(sqInt oop); +static void (*pushRemappableOop)(sqInt oop); static sqInt (*signalSemaphoreWithIndex)(sqInt semaIndex); static sqInt (*sizeOfSTArrayFromCPrimitive)(void *cPtr); static sqInt (*stObjectatput)(sqInt array, sqInt index, sqInt value); @@ -315,13 +315,13 @@ extern sqInt methodArgumentCount(void); extern sqInt methodReturnValue(sqInt oop); extern sqInt nilObject(void); extern sqInt pop(sqInt nItems); -extern sqInt popthenPush(sqInt nItems, sqInt oop); +extern void popthenPush(sqInt nItems, sqInt oop); extern sqInt popRemappableOop(void); extern sqInt primitiveFail(void); extern sqInt primitiveFailFor(sqInt reasonCode); -extern sqInt push(sqInt object); +extern void push(sqInt object); extern sqInt pushInteger(sqInt integerValue); -extern sqInt pushRemappableOop(sqInt oop); +extern void pushRemappableOop(sqInt oop); extern sqInt signalSemaphoreWithIndex(sqInt semaIndex); extern sqInt sizeOfSTArrayFromCPrimitive(void *cPtr); extern sqInt stObjectatput(sqInt array, sqInt index, sqInt value); @@ -1187,7 +1187,9 @@ getStdHandle(sqInt n) return primitiveFailFor(PrimErrNoMemory); } memcpy(firstIndexableField(fileOop), &fileRecords[n], sizeof(SQFile)); - return popthenPush(1, fileOop); + popthenPush(1, fileOop); + + return fileOop; } /* OSProcessPlugin>>#getThisSessionIdentifier */ @@ -4287,7 +4289,6 @@ reapChildProcess(int sigNum) } } - /* Signal sigNum has been caught by a thread other than the pthread in which the interpreter is executing. Rather than handling it in this thread, resend it to the interpreter thread. */ @@ -4431,6 +4432,14 @@ setInterpreter(struct VirtualMachine *anInterpreter) return ok; } +# if defined(SA_NOCLDSTOP) +/* This wrapper is used to handle the new signature of the function */ + +static void +reapChildProcessWrapper(int sigNum, struct __siginfo * sigInfo, void * userData){ + reapChildProcess(sigNum); +} +# endif /* Set the SIGCHLD signal handler in the virtual machine. */ @@ -4442,7 +4451,7 @@ setSigChldHandler(void) # if defined(SA_NOCLDSTOP) - sigchldHandlerAction.sa_sigaction = reapChildProcess; + sigchldHandlerAction.sa_sigaction = reapChildProcessWrapper; sigchldHandlerAction.sa_flags = SA_NODEFER | SA_NOCLDSTOP; if (needSigaltstack()) { sigchldHandlerAction.sa_flags |= SA_ONSTACK; diff --git a/extracted/vm/include/common/sqVirtualMachine.h b/extracted/vm/include/common/sqVirtualMachine.h index 214ce74f34..08811cf45a 100644 --- a/extracted/vm/include/common/sqVirtualMachine.h +++ b/extracted/vm/include/common/sqVirtualMachine.h @@ -30,6 +30,8 @@ #include "sqMemoryAccess.h" +#include "pharovm/semaphores/pSemaphore.h" + #if VM_PROXY_MINOR > 8 # define PrimNoErr 0 # define PrimErrGenericFailure 1 @@ -47,8 +49,6 @@ # define PrimErrNamedInternal 13 # define PrimErrObjectMayMove 14 -/* VMCallbackContext opaque type avoids all including setjmp.h & vmCallback.h */ -typedef struct _VMCallbackContext *vmccp; #endif typedef sqInt (*CompilerHook)(); @@ -62,7 +62,7 @@ typedef struct VirtualMachine { /* InterpreterProxy methodsFor: 'stack access' */ sqInt (*pop)(sqInt nItems); - sqInt (*popthenPush)(sqInt nItems, sqInt oop); + void (*popthenPush)(sqInt nItems, sqInt oop); void (*push)(sqInt object); sqInt (*pushBool)(sqInt trueOrFalse); void (*pushFloat)(double f); @@ -155,7 +155,7 @@ typedef struct VirtualMachine { sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size); sqInt (*makePointwithxValueyValue)(sqInt xValue, sqInt yValue); sqInt (*popRemappableOop)(void); - sqInt (*pushRemappableOop)(sqInt oop); + void (*pushRemappableOop)(sqInt oop); /* InterpreterProxy methodsFor: 'other' */ @@ -312,7 +312,7 @@ typedef struct VirtualMachine { #if VM_PROXY_MINOR > 12 /* Spur */ sqInt (*isImmediate)(sqInt objOop); - sqInt (*characterObjectOf)(int charCode); + sqInt (*characterObjectOf)(sqInt charCode); sqInt (*characterValueOf)(sqInt objOop); sqInt (*isCharacterObject)(sqInt objOop); sqInt (*isCharacterValue)(int charCode); @@ -331,11 +331,11 @@ typedef struct VirtualMachine { sqInt (*isPositiveMachineIntegerObject)(sqInt); #endif - sqInt (*ptEnterInterpreterFromCallback)(vmccp); - sqInt (*ptExitInterpreterToCallback)(vmccp); + sqInt (*ptEnterInterpreterFromCallback)(void *); + sqInt (*ptExitInterpreterToCallback)(void *); sqInt (*isNonImmediate)(sqInt oop); - sqInt (*platformSemaphoreNew)(int initialValue); + Semaphore* (*platformSemaphoreNew)(int initialValue); sqInt (*scheduleInMainThread)(sqInt (*closure)()); diff --git a/extracted/vm/src/common/sqExternalSemaphores.c b/extracted/vm/src/common/sqExternalSemaphores.c index 275b1ce9fd..5abef48a09 100644 --- a/extracted/vm/src/common/sqExternalSemaphores.c +++ b/extracted/vm/src/common/sqExternalSemaphores.c @@ -240,6 +240,8 @@ doSignalExternalSemaphores(sqInt externalSemaphoreTableSize) } sqLowLevelMFence(); + requestMutex->signal(requestMutex); + /* doing this here saves a bounds check in doSignalSemaphoreWithIndex */ if (highTide >= externalSemaphoreTableSize) highTide = externalSemaphoreTableSize - 1; @@ -251,7 +253,6 @@ doSignalExternalSemaphores(sqInt externalSemaphoreTableSize) signalled = 1; } - requestMutex->signal(requestMutex); #if !defined(_WIN32) sigprocmask(SIG_UNBLOCK, &blockedSignalSet, NULL); #endif diff --git a/extracted/vm/src/common/sqVirtualMachine.c b/extracted/vm/src/common/sqVirtualMachine.c index 850fcb9d9f..29e4ead2de 100644 --- a/extracted/vm/src/common/sqVirtualMachine.c +++ b/extracted/vm/src/common/sqVirtualMachine.c @@ -11,7 +11,7 @@ /* InterpreterProxy methodsFor: 'stack access' */ sqInt pop(sqInt nItems); -sqInt popthenPush(sqInt nItems, sqInt oop); +void popthenPush(sqInt nItems, sqInt oop); void push(sqInt object); sqInt pushBool(sqInt trueOrFalse); void pushFloat(double f); @@ -127,7 +127,7 @@ sqInt clone(sqInt oop); sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size); sqInt makePointwithxValueyValue(sqInt xValue, sqInt yValue); sqInt popRemappableOop(void); -sqInt pushRemappableOop(sqInt oop); +void pushRemappableOop(sqInt oop); /* InterpreterProxy methodsFor: 'other' */ @@ -168,7 +168,7 @@ sqInt signalNoResume(sqInt); sqInt isImmediate(sqInt oop); sqInt isCharacterObject(sqInt oop); sqInt isCharacterValue(int charCode); -sqInt characterObjectOf(int charCode); +sqInt characterObjectOf(sqInt charCode); sqInt characterValueOf(sqInt oop); sqInt isPinned(sqInt objOop); sqInt pinObject(sqInt objOop); diff --git a/ffiTestLibrary/src/callbacks.c b/ffiTestLibrary/src/callbacks.c index 5773b9f850..2baa45ca9e 100644 --- a/ffiTestLibrary/src/callbacks.c +++ b/ffiTestLibrary/src/callbacks.c @@ -34,7 +34,7 @@ EXPORT(int) reentringCallback(SIMPLE_CALLBACK fun, int base){ static int value = 0; #if FEATURE_THREADED_FFI -void otherThread(void* aFunction){ +void* otherThread(void* aFunction){ SIMPLE_CALLBACK f = (SIMPLE_CALLBACK) aFunction; #ifdef _WIN32