diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-10-10 11:49:11 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-10-10 11:49:11 (GMT) |
commit | 9d1989bb3d587463c572ff5d4dd49ec042c68d19 (patch) | |
tree | c2d7b09acbf000b69962c4cd275cfaaa7246a64e /generic | |
parent | 0cc51f1259bd11611fce289213ceb3ae398d2406 (diff) | |
download | tcl-9d1989bb3d587463c572ff5d4dd49ec042c68d19.zip tcl-9d1989bb3d587463c572ff5d4dd49ec042c68d19.tar.gz tcl-9d1989bb3d587463c572ff5d4dd49ec042c68d19.tar.bz2 |
Handle Tcl_SetResult() the same way as Tcl_EventuallyFree
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclDecls.h | 3 | ||||
-rw-r--r-- | generic/tclTest.c | 16 |
2 files changed, 11 insertions, 8 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 79a2f7b..f8e9bcf 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -3976,6 +3976,9 @@ extern const TclStubs *tclStubsPtr; # undef Tcl_EventuallyFree # define Tcl_EventuallyFree \ ((void (*)(void *,void *))(void *)(tclStubsPtr->tcl_EventuallyFree)) /* 132 */ +# undef Tcl_SetResult +# define Tcl_SetResult \ + ((void (*)(Tcl_Interp *, char *, void *))(void *)(tclStubsPtr->tcl_SetResult)) /* 232 */ #endif #if defined(_WIN32) && defined(UNICODE) diff --git a/generic/tclTest.c b/generic/tclTest.c index d05ef7d..c623b36 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -204,7 +204,7 @@ static int ObjTraceProc(ClientData clientData, Tcl_Obj *const objv[]); static void ObjTraceDeleteProc(ClientData clientData); static void PrintParse(Tcl_Interp *interp, Tcl_Parse *parsePtr); -static void SpecialFree(char *blockPtr); +static void SpecialFree(void *blockPtr); static int StaticInitProc(Tcl_Interp *interp); static Tcl_CmdProc TestasyncCmd; static Tcl_ObjCmdProc TestbumpinterpepochObjCmd; @@ -265,7 +265,7 @@ static Tcl_ObjCmdProc TestreturnObjCmd; static void TestregexpXflags(const char *string, int length, int *cflagsPtr, int *eflagsPtr); static Tcl_ObjCmdProc TestsaveresultCmd; -static void TestsaveresultFree(char *blockPtr); +static void TestsaveresultFree(void *blockPtr); static Tcl_CmdProc TestsetassocdataCmd; static Tcl_CmdProc TestsetCmd; static Tcl_CmdProc Testset2Cmd; @@ -1764,7 +1764,7 @@ TestdstringCmd( } else if (strcmp(argv[2], "special") == 0) { char *s = (char *)ckalloc(100) + 16; strcpy(s, "This is a specially-allocated string"); - Tcl_SetResult(interp, s, SpecialFree); + Tcl_SetResult(interp, s, (Tcl_FreeProc *)(void *)SpecialFree); } else { Tcl_AppendResult(interp, "bad gresult option \"", argv[2], "\": must be staticsmall, staticlarge, free, or special", @@ -1811,9 +1811,9 @@ TestdstringCmd( */ static void SpecialFree( - char *blockPtr /* Block to free. */ + void *blockPtr /* Block to free. */ ) { - ckfree(blockPtr - 16); + ckfree((char *)blockPtr - 16); } /* @@ -5428,7 +5428,7 @@ TestsaveresultCmd( break; } case RESULT_DYNAMIC: - Tcl_SetResult(interp, (char *)"dynamic result", TestsaveresultFree); + Tcl_SetResult(interp, (char *)"dynamic result", (Tcl_FreeProc *)(void *)TestsaveresultFree); break; case RESULT_OBJECT: objPtr = Tcl_NewStringObj("object result", -1); @@ -5454,7 +5454,7 @@ TestsaveresultCmd( switch ((enum options) index) { case RESULT_DYNAMIC: { - int present = iPtr->freeProc == TestsaveresultFree; + int present = iPtr->freeProc == (Tcl_FreeProc *)(void *)TestsaveresultFree; int called = freeCount; Tcl_AppendElement(interp, called ? "called" : "notCalled"); @@ -5489,7 +5489,7 @@ TestsaveresultCmd( static void TestsaveresultFree( - char *blockPtr) + void *blockPtr) { freeCount++; } |