diff options
author | dgp <dgp@users.sourceforge.net> | 2008-12-03 06:36:04 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2008-12-03 06:36:04 (GMT) |
commit | 1320303a3a83a32f63deae54d36d1cfe2cdb89e6 (patch) | |
tree | bce807685d653d5c7710d357f6d83ae87ca98ef6 | |
parent | fa556f0aad80fad65699c15f325c4374e083f6f5 (diff) | |
download | tcl-1320303a3a83a32f63deae54d36d1cfe2cdb89e6.zip tcl-1320303a3a83a32f63deae54d36d1cfe2cdb89e6.tar.gz tcl-1320303a3a83a32f63deae54d36d1cfe2cdb89e6.tar.bz2 |
* generic/tclFileName.c (TclDoGlob): One of the
Tcl_FSMatchInDirectory() calls did not have its return code
checked. Some VFS drivers can return TCL_ERROR, and when that's
not checked, the error message gets converted into a list of
matching files returned by [glob], with ridiculous results.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | generic/tclFileName.c | 8 |
2 files changed, 12 insertions, 4 deletions
@@ -1,3 +1,11 @@ +2008-12-03 Don Porter <dgp@users.sourceforge.net> + + * generic/tclFileName.c (TclDoGlob): One of the + Tcl_FSMatchInDirectory() calls did not have its return code + checked. Some VFS drivers can return TCL_ERROR, and when that's + not checked, the error message gets converted into a list of + matching files returned by [glob], with ridiculous results. + 2008-12-01 Don Porter <dgp@users.sourceforge.net> * generic/tclIO.c (TclFinalizeIOSubsystem): Revised latest commit to diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 15c04d8..c14893f 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -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.40.2.16 2008/08/13 17:59:06 dgp Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.40.2.17 2008/12/03 06:36:05 dgp Exp $ */ #include "tclInt.h" @@ -2662,10 +2662,10 @@ TclDoGlob(interp, separators, headPtr, tail, types) nameObj = Tcl_NewStringObj(name, Tcl_DStringLength(headPtr)); Tcl_IncrRefCount(nameObj); - Tcl_FSMatchInDirectory(interp, Tcl_GetObjResult(interp), nameObj, - NULL, types); + result = Tcl_FSMatchInDirectory(interp, Tcl_GetObjResult(interp), + nameObj, NULL, types); Tcl_DecrRefCount(nameObj); - return TCL_OK; + return result; } } |