summaryrefslogtreecommitdiffstats
path: root/generic/tclPathObj.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2017-05-01 20:25:03 (GMT)
committerdgp <dgp@users.sourceforge.net>2017-05-01 20:25:03 (GMT)
commit262df0197b947ebc3e431b14680b1c52fb3cdefb (patch)
treef1f237860cddc62d0bd939d7c5272cde05c048e9 /generic/tclPathObj.c
parent5d0864fb41175752fd026bc818facf5849387c5a (diff)
parented853e1ffb7933562c641af3d69686df27520a8f (diff)
downloadtcl-262df0197b947ebc3e431b14680b1c52fb3cdefb.zip
tcl-262df0197b947ebc3e431b14680b1c52fb3cdefb.tar.gz
tcl-262df0197b947ebc3e431b14680b1c52fb3cdefb.tar.bz2
[f9fe90d0fa] [file join] normalization. See filesystem-1.52*
Diffstat (limited to 'generic/tclPathObj.c')
-rw-r--r--generic/tclPathObj.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index 20f41a3..31ed68e 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -921,7 +921,17 @@ TclJoinPath(
if (res != NULL) {
TclDecrRefCount(res);
}
- return TclNewFSPathObj(elt, str, len);
+
+ if (PATHFLAGS(elt)) {
+ return TclNewFSPathObj(elt, str, len);
+ }
+ if (TCL_PATH_ABSOLUTE != Tcl_FSGetPathType(elt)) {
+ return TclNewFSPathObj(elt, str, len);
+ }
+ (void) Tcl_FSGetNormalizedPath(NULL, elt);
+ if (elt == PATHOBJ(elt)->normPathPtr) {
+ return TclNewFSPathObj(elt, str, len);
+ }
}
}