diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-02-28 12:46:42 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-02-28 12:46:42 (GMT) |
| commit | 4af90e27e5e22978b56d6cb5d0d1ecd90af0f48f (patch) | |
| tree | d5db4ca8a1fecbd63d9e72730fad2f404367daff /generic/tclThreadTest.c | |
| parent | 63994a73e3f641451b26f48f697b6a069863751c (diff) | |
| parent | 52e543c5691a60c3ef802fecf1ae08e7efcf19b7 (diff) | |
| download | tcl-4af90e27e5e22978b56d6cb5d0d1ecd90af0f48f.zip tcl-4af90e27e5e22978b56d6cb5d0d1ecd90af0f48f.tar.gz tcl-4af90e27e5e22978b56d6cb5d0d1ecd90af0f48f.tar.bz2 | |
Merge 8.7
Diffstat (limited to 'generic/tclThreadTest.c')
| -rw-r--r-- | generic/tclThreadTest.c | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index 64858cb..f4687ea 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -119,7 +119,7 @@ static char *errorProcString; TCL_DECLARE_MUTEX(threadMutex) -static int ThreadObjCmd(ClientData clientData, +static int ThreadObjCmd(void *clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int ThreadCreate(Tcl_Interp *interp, const char *script, @@ -130,15 +130,15 @@ static int ThreadSend(Tcl_Interp *interp, Tcl_ThreadId id, static int ThreadCancel(Tcl_Interp *interp, Tcl_ThreadId id, const char *result, int flags); -static Tcl_ThreadCreateType NewTestThread(ClientData clientData); +static Tcl_ThreadCreateType NewTestThread(void *clientData); static void ListRemove(ThreadSpecificData *tsdPtr); static void ListUpdateInner(ThreadSpecificData *tsdPtr); static int ThreadEventProc(Tcl_Event *evPtr, int mask); static void ThreadErrorProc(Tcl_Interp *interp); -static void ThreadFreeProc(ClientData clientData); +static void ThreadFreeProc(void *clientData); static int ThreadDeleteEvent(Tcl_Event *eventPtr, - ClientData clientData); -static void ThreadExitProc(ClientData clientData); + void *clientData); +static void ThreadExitProc(void *clientData); extern int Tcltest_Init(Tcl_Interp *interp); /* @@ -206,7 +206,7 @@ TclThread_Init( /* ARGSUSED */ static int ThreadObjCmd( - ClientData dummy, /* Not used. */ + void *dummy, /* Not used. */ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ @@ -223,6 +223,7 @@ ThreadObjCmd( THREAD_ID, THREAD_JOIN, THREAD_NAMES, THREAD_SEND, THREAD_WAIT, THREAD_ERRORPROC }; + (void)dummy; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?"); @@ -435,7 +436,7 @@ ThreadObjCmd( Tcl_Free(errorProcString); } proc = Tcl_GetString(objv[2]); - errorProcString = Tcl_Alloc(strlen(proc) + 1); + errorProcString = (char *)Tcl_Alloc(strlen(proc) + 1); strcpy(errorProcString, proc); Tcl_MutexUnlock(&threadMutex); return TCL_OK; @@ -556,9 +557,9 @@ ThreadCreate( Tcl_ThreadCreateType NewTestThread( - ClientData clientData) + void *clientData) { - ThreadCtrl *ctrlPtr = clientData; + ThreadCtrl *ctrlPtr = (ThreadCtrl *)clientData; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); int result; char *threadEvalScript; @@ -595,7 +596,7 @@ NewTestThread( * eval'ing, for the case that we exit during evaluation */ - threadEvalScript = Tcl_Alloc(strlen(ctrlPtr->script) + 1); + threadEvalScript = (char *)Tcl_Alloc(strlen(ctrlPtr->script) + 1); strcpy(threadEvalScript, ctrlPtr->script); Tcl_CreateThreadExitHandler(ThreadExitProc, threadEvalScript); @@ -840,13 +841,13 @@ ThreadSend( * Create the event for its event queue. */ - threadEventPtr = Tcl_Alloc(sizeof(ThreadEvent)); - threadEventPtr->script = Tcl_Alloc(strlen(script) + 1); + threadEventPtr = (ThreadEvent*)Tcl_Alloc(sizeof(ThreadEvent)); + threadEventPtr->script = (char *)Tcl_Alloc(strlen(script) + 1); strcpy(threadEventPtr->script, script); if (!wait) { resultPtr = threadEventPtr->resultPtr = NULL; } else { - resultPtr = Tcl_Alloc(sizeof(ThreadEventResult)); + resultPtr = (ThreadEventResult *)Tcl_Alloc(sizeof(ThreadEventResult)); threadEventPtr->resultPtr = resultPtr; /* @@ -1018,6 +1019,7 @@ ThreadEventProc( Tcl_Interp *interp = tsdPtr->interp; int code; const char *result, *errorCode, *errorInfo; + (void)mask; if (interp == NULL) { code = TCL_ERROR; @@ -1042,14 +1044,14 @@ ThreadEventProc( if (resultPtr) { Tcl_MutexLock(&threadMutex); resultPtr->code = code; - resultPtr->result = Tcl_Alloc(strlen(result) + 1); + resultPtr->result = (char *)Tcl_Alloc(strlen(result) + 1); strcpy(resultPtr->result, result); if (errorCode != NULL) { - resultPtr->errorCode = Tcl_Alloc(strlen(errorCode) + 1); + resultPtr->errorCode = (char *)Tcl_Alloc(strlen(errorCode) + 1); strcpy(resultPtr->errorCode, errorCode); } if (errorInfo != NULL) { - resultPtr->errorInfo = Tcl_Alloc(strlen(errorInfo) + 1); + resultPtr->errorInfo = (char *)Tcl_Alloc(strlen(errorInfo) + 1); strcpy(resultPtr->errorInfo, errorInfo); } Tcl_ConditionNotify(&resultPtr->done); @@ -1073,7 +1075,7 @@ ThreadEventProc( * None. * * Side effects: - * Clears up mem specified in ClientData + * Clears up mem specified in clientData * *------------------------------------------------------------------------ */ @@ -1081,7 +1083,7 @@ ThreadEventProc( /* ARGSUSED */ static void ThreadFreeProc( - ClientData clientData) + void *clientData) { if (clientData) { Tcl_Free(clientData); @@ -1109,8 +1111,10 @@ ThreadFreeProc( static int ThreadDeleteEvent( Tcl_Event *eventPtr, /* Really ThreadEvent */ - ClientData clientData) /* dummy */ + void *dummy) /* dummy */ { + (void)dummy; + if (eventPtr->proc == ThreadEventProc) { Tcl_Free(((ThreadEvent *) eventPtr)->script); return 1; @@ -1144,9 +1148,9 @@ ThreadDeleteEvent( /* ARGSUSED */ static void ThreadExitProc( - ClientData clientData) + void *clientData) { - char *threadEvalScript = clientData; + char *threadEvalScript = (char *)clientData; ThreadEventResult *resultPtr, *nextPtr; Tcl_ThreadId self = Tcl_GetCurrentThread(); ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); @@ -1199,7 +1203,7 @@ ThreadExitProc( const char *msg = "target thread died"; - resultPtr->result = Tcl_Alloc(strlen(msg) + 1); + resultPtr->result = (char *)Tcl_Alloc(strlen(msg) + 1); strcpy(resultPtr->result, msg); resultPtr->code = TCL_ERROR; Tcl_ConditionNotify(&resultPtr->done); |
