summaryrefslogtreecommitdiffstats
path: root/generic/tclIORChan.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-10 11:35:22 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-10 11:35:22 (GMT)
commit462e3dd262738368000603e841b1365c4dc115b4 (patch)
treee8557f9e56e50c6429873b660c678861761fbe42 /generic/tclIORChan.c
parenta74d73bc13dd4961d02d3974912000145bff5d1a (diff)
downloadtcl-462e3dd262738368000603e841b1365c4dc115b4.zip
tcl-462e3dd262738368000603e841b1365c4dc115b4.tar.gz
tcl-462e3dd262738368000603e841b1365c4dc115b4.tar.bz2
Proposed fix for [8ab8a138c9]: Do not pass incompatible function pointers to Tcl_EventuallyFree().
This should eliminate all warnings when using -fsanitize=function.
Diffstat (limited to 'generic/tclIORChan.c')
-rw-r--r--generic/tclIORChan.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index 3eca3f8..792cf80 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -430,7 +430,7 @@ static Tcl_Obj * DecodeEventMask(int mask);
static ReflectedChannel * NewReflectedChannel(Tcl_Interp *interp,
Tcl_Obj *cmdpfxObj, int mode, Tcl_Obj *handleObj);
static Tcl_Obj * NextHandle(void);
-static void FreeReflectedChannel(ReflectedChannel *rcPtr);
+static void FreeReflectedChannel(void *blockPtr);
static int InvokeTclMethod(ReflectedChannel *rcPtr,
MethodName method, Tcl_Obj *argOneObj,
Tcl_Obj *argTwoObj, Tcl_Obj **resultObjPtr);
@@ -1170,7 +1170,7 @@ ReflectClose(
ckfree((char *)tctPtr);
((Channel *)rcPtr->chan)->typePtr = NULL;
}
- Tcl_EventuallyFree(rcPtr, (Tcl_FreeProc *) FreeReflectedChannel);
+ Tcl_EventuallyFree(rcPtr, (Tcl_FreeProc *)(void *)FreeReflectedChannel);
return EOK;
}
@@ -1239,7 +1239,7 @@ ReflectClose(
ckfree((char *)tctPtr);
((Channel *)rcPtr->chan)->typePtr = NULL;
}
- Tcl_EventuallyFree(rcPtr, (Tcl_FreeProc *) FreeReflectedChannel);
+ Tcl_EventuallyFree(rcPtr, (Tcl_FreeProc *)(void *)FreeReflectedChannel);
return (result == TCL_OK) ? EOK : EINVAL;
}
@@ -2210,8 +2210,9 @@ NextHandle(void)
static void
FreeReflectedChannel(
- ReflectedChannel *rcPtr)
+ void *blockPtr)
{
+ ReflectedChannel *rcPtr = (ReflectedChannel *) blockPtr;
Channel *chanPtr = (Channel *) rcPtr->chan;
TclChannelRelease((Tcl_Channel)chanPtr);