summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2017-12-06 13:02:32 (GMT)
committerdgp <dgp@users.sourceforge.net>2017-12-06 13:02:32 (GMT)
commitbb1c5fe83355d454d63db62da5797204c6cec06e (patch)
treecded73e2ddac2549f36cbe5081cee0d3869193ec
parent3eef9fcea1274b68161aa2c5ebfb6a975ac7143a (diff)
downloadtcl-bb1c5fe83355d454d63db62da5797204c6cec06e.zip
tcl-bb1c5fe83355d454d63db62da5797204c6cec06e.tar.gz
tcl-bb1c5fe83355d454d63db62da5797204c6cec06e.tar.bz2
[ce3a211dcb] Failed file normalize when tail is empty string.
-rw-r--r--generic/tclPathObj.c5
-rw-r--r--tests/fileSystem.test16
2 files changed, 18 insertions, 3 deletions
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index a306853..87ddfb7 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -1869,7 +1869,6 @@ Tcl_FSGetNormalizedPath(
*/
(void) Tcl_GetStringFromObj(dir, &cwdLen);
- cwdLen += (Tcl_GetString(copy)[cwdLen] == '/');
/* Normalize the combined string. */
@@ -1890,13 +1889,13 @@ Tcl_FSGetNormalizedPath(
* to a normalized head, we can more efficiently normalize the
* combined path by passing over only the unnormalized tail
* portion. When this is sufficient, prior developers claim
- * this should be much faster. We use 'cwdLen-1' so that we are
+ * this should be much faster. We use 'cwdLen' so that we are
* already pointing at the dir-separator that we know about.
* The normalization code will actually start off directly
* after that separator.
*/
- TclFSNormalizeToUniquePath(interp, copy, cwdLen-1);
+ TclFSNormalizeToUniquePath(interp, copy, cwdLen);
}
/* Now we need to construct the new path object. */
diff --git a/tests/fileSystem.test b/tests/fileSystem.test
index d34de8f..1c507e1 100644
--- a/tests/fileSystem.test
+++ b/tests/fileSystem.test
@@ -508,6 +508,22 @@ test filesystem-1.52.1 {bug f9f390d0fa: file join where strep is not canonical}
file normalize $x
file join $x
} -result /foo
+test filesystem-1.53 {[Bug 3559678] - normalize when tail is empty} {
+ string match */ [file normalize [lindex [glob -dir [pwd] {{}}] 0]]
+} 0
+test filesystem-1.54 {[Bug ce3a211dcb] - normalize when tail is empty} -setup {
+ set save [pwd]
+ cd [set home [makeDirectory ce3a211dcb]]
+ makeDirectory A $home
+ cd [lindex [glob */] 0]
+} -body {
+ string match */A [pwd]
+} -cleanup {
+ cd $home
+ removeDirectory A $home
+ cd $save
+ removeDirectory ce3a211dcb
+} -result 1
test filesystem-2.0 {new native path} {unix} {
foreach f [lsort [glob -nocomplain /usr/bin/c*]] {