summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-13 14:33:24 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-13 14:33:24 (GMT)
commit559178bdc0175fffe57607164f601e2816ac0de9 (patch)
tree9ab3d4bb45612fdca8baa3b2191a2ce941570caa
parentbfa39cdd57f5e52d610b1c1e7168718760e77b93 (diff)
downloadtcl-559178bdc0175fffe57607164f601e2816ac0de9.zip
tcl-559178bdc0175fffe57607164f601e2816ac0de9.tar.gz
tcl-559178bdc0175fffe57607164f601e2816ac0de9.tar.bz2
Fix [52dbc4b3f8]: tclInterp.c: Tcl_Free() called through pointer of incorrect type
-rw-r--r--generic/tclInterp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index 0a57b70..42d8ec3 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -3499,6 +3499,14 @@ RunLimitHandlers(
*----------------------------------------------------------------------
*/
+/* Bug 52dbc4b3f8: wrap Tcl_Free since it is not a Tcl_LimitHandlerDeleteProc. */
+static void
+WrapFree(
+ void *ptr)
+{
+ Tcl_Free(ptr);
+}
+
void
Tcl_LimitAddHandler(
Tcl_Interp *interp,
@@ -3515,10 +3523,7 @@ Tcl_LimitAddHandler(
*/
if (deleteProc == (Tcl_LimitHandlerDeleteProc *) TCL_DYNAMIC) {
- deleteProc = (Tcl_LimitHandlerDeleteProc *) Tcl_Free;
- }
- if (deleteProc == (Tcl_LimitHandlerDeleteProc *) TCL_STATIC) {
- deleteProc = NULL;
+ deleteProc = WrapFree;
}
/*