]> granicus.if.org Git - graphviz/commitdiff
fix memory leak in gdtclft
authorellson <devnull@localhost>
Sun, 20 Nov 2005 02:17:03 +0000 (02:17 +0000)
committerellson <devnull@localhost>
Sun, 20 Nov 2005 02:17:03 +0000 (02:17 +0000)
reported by Dave Bodenstab <dave_bodenstab@sbcglobal.net>

tclpkg/gdtclft/gdtclft.c

index f749ff3a95ebd02bfd44e3fdcabecf9dfb4cc4ac..f44020b459a68cfbc46ddb03bc58d61e2fad315b 100644 (file)
@@ -581,14 +581,14 @@ tclGdDestroyCmd(Tcl_Interp * interp, GdData * gdData, int argc,
                Tcl_Obj * CONST objv[])
 {
     gdImagePtr im;
-    void *hdl;
-
-    /* Get the handle, and the image pointer. */
-    hdl = (void *) tclhandleXlate(gdData->handleTbl,
-                                 Tcl_GetString(objv[2]));
-    im = *(gdImagePtr *) hdl;
-    /* Release the handle, destroy the image. */
-    tclhandleFree(gdData->handleTbl, hdl);
+
+    unsigned long idx;
+
+    if (tclhandleIndex(gdData->handleTbl, Tcl_GetString(objv[2]), &idx) != TCL_OK)
+
+       return TCL_ERROR;
+    im = *(gdImagePtr *) tclhandleXlateIndex(gdData->handleTbl, idx);
+    tclhandleFreeIndex(gdData->handleTbl, idx);
     gdImageDestroy(im);
 
     return TCL_OK;