Tcl Source Code

Artifact [d3f44e5c64]
Login

Artifact d3f44e5c648b143e55388a918cc3fa0196dd3e5f:

Attachment "tclFileName.c.diff" to ticket [1335006fff] added by melbardis 2005-10-23 00:48:25.
--- old-tclFileName.c	2005-10-18 07:42:59.000000000 -0700
+++ new-tclFileName.c	2005-10-22 10:37:39.812500000 -0700
@@ -10,7 +10,7 @@
  * See the file "license.terms" for information on usage and redistribution of
  * this file, and for a DISCLAIMER OF ALL WARRANTIES.
  *
- * RCS: @(#) $Id: tclFileName.c,v 1.72 2005/10/18 14:42:59 dkf Exp $
+ * RCS: @(#) $Id: tclFileName.c 782 2005-10-20 00:55:38Z [email protected] $
  */
 
 #include "tclInt.h"
@@ -1504,6 +1504,7 @@
 		Tcl_DStringAppend(&prefix, separators, 1);
 	    }
 	}
+
 	if (TclGlob(interp, Tcl_DStringValue(&prefix), pathOrDir, globFlags,
 		globTypes) != TCL_OK) {
 	    result = TCL_ERROR;
@@ -1692,6 +1693,11 @@
 	    }
 	    *tail = c;
 	    if (head == NULL) {
+                /* cleanup EPM */
+                if (pathPrefix) {
+                    Tcl_DecrRefCount(pathPrefix);
+                }
+
 		if (globFlags & TCL_GLOBMODE_NO_COMPLAIN) {
 		    return TCL_OK;
 		} else {
@@ -1773,6 +1779,11 @@
 
 		if (cwd == NULL) {
 		    Tcl_DecrRefCount(temp);
+                    /* cleanup EPM */
+                    if (pathPrefix) {
+                        Tcl_DecrRefCount(pathPrefix);
+                    }
+
 		    if (globFlags & TCL_GLOBMODE_NO_COMPLAIN) {
 			return TCL_OK;
 		    } else {
@@ -1868,6 +1879,10 @@
      */
 
     if (result != TCL_OK) {
+        /* cleanup EPM */
+        if (pathPrefix) {
+            Tcl_DecrRefCount(pathPrefix);
+        }
 	TclDecrRefCount(filenamesObj);
 	if (globFlags & TCL_GLOBMODE_NO_COMPLAIN) {
 	    /* Put back the old result and reset the return code */
@@ -1952,6 +1967,10 @@
     TclDecrRefCount(savedResultObj);
     TclDecrRefCount(filenamesObj);
 
+    /* cleanup EPM */
+    if (pathPrefix) {
+        Tcl_DecrRefCount(pathPrefix);
+    }
     return result;
 }