diff --git generic/tclInterp.c generic/tclInterp.c
index 0a57b70c8d..889d525eef 100644
--- generic/tclInterp.c
+++ 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,7 +3523,7 @@ Tcl_LimitAddHandler(
      */
 
     if (deleteProc == (Tcl_LimitHandlerDeleteProc *) TCL_DYNAMIC) {
-	deleteProc = (Tcl_LimitHandlerDeleteProc *) Tcl_Free;
+	deleteProc = WrapFree;
     }
     if (deleteProc == (Tcl_LimitHandlerDeleteProc *) TCL_STATIC) {
 	deleteProc = NULL;
