summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2003-11-10 20:34:11 (GMT)
committerdgp <dgp@users.sourceforge.net>2003-11-10 20:34:11 (GMT)
commitf38d3f45e484452ba99ef07b5348e2c479650d4a (patch)
treecd0670715ebd514c77d2894bd372f15b2a7f3bac /win
parent3b1188db0613694c7f2529386464c9ef96e8bca3 (diff)
downloadtcl-f38d3f45e484452ba99ef07b5348e2c479650d4a.zip
tcl-f38d3f45e484452ba99ef07b5348e2c479650d4a.tar.gz
tcl-f38d3f45e484452ba99ef07b5348e2c479650d4a.tar.bz2
* unix/tclUnixInit.c (TclpInitLibraryPath):
* win/tclWinInit.c (TclpInitLibraryPath): Fix for [Bug 832657] that should not run afoul of startup constraints.
Diffstat (limited to 'win')
-rw-r--r--win/tclWinInit.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index 65ca7d1..d84925b 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -7,7 +7,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tclWinInit.c,v 1.42 2003/08/06 23:48:42 hobbs Exp $
+ * RCS: @(#) $Id: tclWinInit.c,v 1.43 2003/11/10 20:34:17 dgp Exp $
*/
#include "tclWinInt.h"
@@ -197,7 +197,7 @@ TclpInitLibraryPath(path)
*/
sprintf(installLib, "lib/tcl%s", TCL_VERSION);
- sprintf(developLib, "../tcl%s/library", TCL_PATCH_LEVEL);
+ sprintf(developLib, "tcl%s/library", TCL_PATCH_LEVEL);
/*
* Look for the library relative to default encoding dir.
@@ -252,7 +252,25 @@ TclpInitLibraryPath(path)
*/
if (path != NULL) {
- Tcl_SplitPath(path, &pathc, &pathv);
+ int i, origc;
+ CONST char **origv;
+
+ Tcl_SplitPath(path, &origc, &origv);
+ pathc = 0;
+ pathv = (CONST char **) ckalloc((unsigned int)(origc * sizeof(char *)));
+ for (i=0; i< origc; i++) {
+ if (origv[i][0] == '.') {
+ if (strcmp(origv[i], ".") == 0) {
+ /* do nothing */
+ } else if (strcmp(origv[i], "..") == 0) {
+ pathc--;
+ } else {
+ pathv[pathc++] = origv[i];
+ }
+ } else {
+ pathv[pathc++] = origv[i];
+ }
+ }
if (pathc > 2) {
str = pathv[pathc - 2];
pathv[pathc - 2] = installLib;
@@ -307,6 +325,7 @@ TclpInitLibraryPath(path)
Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
Tcl_DStringFree(&ds);
}
+ ckfree((char *) origv);
ckfree((char *) pathv);
}