summaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorpooryorick <com.digitalsmarties@pooryorick.com>2021-05-18 10:58:18 (GMT)
committerpooryorick <com.digitalsmarties@pooryorick.com>2021-05-18 10:58:18 (GMT)
commitf14d3b58cf24bdf36bbbc577c89287a7ab8a89cf (patch)
treea7824661ebf82b4c72edc0b2626d7beb3db382f4 /unix
parent9649c9074c69b3e5ee7f6dadceb856fb824df315 (diff)
parent0187ddfaf34b8ede9d2754ce18ad1a60110c4ef4 (diff)
downloadtcl-f14d3b58cf24bdf36bbbc577c89287a7ab8a89cf.zip
tcl-f14d3b58cf24bdf36bbbc577c89287a7ab8a89cf.tar.gz
tcl-f14d3b58cf24bdf36bbbc577c89287a7ab8a89cf.tar.bz2
Fix [28027d8bb7745fb0], memory leaks in tclUnload.c .
Diffstat (limited to 'unix')
-rw-r--r--unix/dltest/pkgua.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/unix/dltest/pkgua.c b/unix/dltest/pkgua.c
index 0ab3e23..7082b36 100644
--- a/unix/dltest/pkgua.c
+++ b/unix/dltest/pkgua.c
@@ -21,6 +21,7 @@ static int PkguaEqObjCmd(ClientData clientData,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
static int PkguaQuoteObjCmd(ClientData clientData,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
+static void CommandDeleted(ClientData clientData);
/*
* In the following hash table we are going to store a struct that holds all
@@ -40,6 +41,13 @@ static int interpTokenMapInitialised = 0;
static void
+CommandDeleted(ClientData clientData)
+{
+ Tcl_Command *cmdToken = clientData;
+ *cmdToken = NULL;
+}
+
+static void
PkguaInitTokensHashTable(void)
{
if (interpTokenMapInitialised) {
@@ -221,12 +229,14 @@ Pkgua_Init(
Tcl_SetVar2(interp, "::pkgua_loaded", NULL, ".", TCL_APPEND_VALUE);
cmdTokens = PkguaInterpToTokens(interp);
- cmdTokens[cmdIndex++] =
- Tcl_CreateObjCommand(interp, "pkgua_eq", PkguaEqObjCmd, NULL,
- NULL);
- cmdTokens[cmdIndex++] =
+ cmdTokens[cmdIndex] =
+ Tcl_CreateObjCommand(interp, "pkgua_eq", PkguaEqObjCmd, &cmdTokens[cmdIndex],
+ CommandDeleted);
+ cmdIndex++;
+ cmdTokens[cmdIndex] =
Tcl_CreateObjCommand(interp, "pkgua_quote", PkguaQuoteObjCmd,
- NULL, NULL);
+ &cmdTokens[cmdIndex], CommandDeleted);
+ cmdIndex++;
return TCL_OK;
}