diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-10-10 11:35:22 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-10-10 11:35:22 (GMT) |
commit | 462e3dd262738368000603e841b1365c4dc115b4 (patch) | |
tree | e8557f9e56e50c6429873b660c678861761fbe42 /generic/tclIORChan.c | |
parent | a74d73bc13dd4961d02d3974912000145bff5d1a (diff) | |
download | tcl-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.c | 9 |
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); |