diff options
author | dgp <dgp@users.sourceforge.net> | 2012-08-20 23:45:25 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2012-08-20 23:45:25 (GMT) |
commit | 843b8497d3c972540e5b12b26ae3055d9df4bf77 (patch) | |
tree | 6e5cb95f331e942f7ff8815b86c65862fd1e90fc | |
parent | ac385804788ee5d3a9ee7929a7df56b930b6b8d7 (diff) | |
download | tcl-843b8497d3c972540e5b12b26ae3055d9df4bf77.zip tcl-843b8497d3c972540e5b12b26ae3055d9df4bf77.tar.gz tcl-843b8497d3c972540e5b12b26ae3055d9df4bf77.tar.bz2 |
3559678 Fix bad filename normalization when the last component is the empty string.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/tclPathObj.c | 9 |
2 files changed, 12 insertions, 2 deletions
@@ -1,3 +1,8 @@ +2012-08-20 Don Porter <dgp@users.sourceforge.net> + + * generic/tclPathObj.c: [Bug 3559678] Fix bad filename normalization + when the last component is the empty string. + 2012-08-20 Jan Nijtmans <nijtmans@users.sf.net> * win/tclWinPort.h: Remove wrapper macro for ntohs(): unnecessary, diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index ac9df3a..c9b3b8e 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -1831,7 +1831,7 @@ Tcl_FSGetNormalizedPath( */ Tcl_Obj *dir, *copy; - int cwdLen, pathType; + int tailLen, cwdLen, pathType; pathType = Tcl_FSGetPathType(fsPathPtr->cwdPtr); dir = Tcl_FSGetNormalizedPath(interp, fsPathPtr->cwdPtr); @@ -1843,7 +1843,12 @@ Tcl_FSGetNormalizedPath( UpdateStringOfFsPath(pathPtr); } - copy = AppendPath(dir, fsPathPtr->normPathPtr); + Tcl_GetStringFromObj(fsPathPtr->normPathPtr, &tailLen); + if (tailLen) { + copy = AppendPath(dir, fsPathPtr->normPathPtr); + } else { + copy = Tcl_DuplicateObj(dir); + } Tcl_IncrRefCount(dir); Tcl_IncrRefCount(copy); |