summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-10 11:49:11 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-10 11:49:11 (GMT)
commit9d1989bb3d587463c572ff5d4dd49ec042c68d19 (patch)
treec2d7b09acbf000b69962c4cd275cfaaa7246a64e /generic
parent0cc51f1259bd11611fce289213ceb3ae398d2406 (diff)
downloadtcl-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.h3
-rw-r--r--generic/tclTest.c16
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++;
}