Tcl Source Code

Artifact [5e403bde69]
Login

Artifact 5e403bde69ddfe93481017d7b8252cb422575ca9:

Attachment "tcldiffs" to ticket [1548263fff] added by coldstore 2006-08-29 07:28:11.
Only in tcl-dev/: .#ChangeLog
Only in tcl-dev/: debian
diff --exclude Root -c -r tcl/generic/tclIOUtil.c tcl-dev/generic/tclIOUtil.c
*** tcl/generic/tclIOUtil.c	2006-08-22 00:56:48.000000000 +1000
--- tcl-dev/generic/tclIOUtil.c	2006-08-29 09:52:14.000000000 +1000
***************
*** 1234,1239 ****
--- 1234,1240 ----
  	    int len, mlen;
  	    CONST char *path;
  	    CONST char *mount;
+ 	    Tcl_Obj *norm;
  
  	    /*
  	     * We know mElt is absolute normalized and lies inside pathPtr, so
***************
*** 1242,1259 ****
  	     */
  
  	    mount = Tcl_GetStringFromObj(mElt, &mlen);
! 	    path = Tcl_GetStringFromObj(Tcl_FSGetNormalizedPath(NULL, pathPtr),
! 		    &len);
! 	    if (path[len-1] == '/') {
! 		/*
! 		 * Deal with the root of the volume.
! 		 */
  
! 		len--;
  	    }
- 	    mElt = TclNewFSPathObj(pathPtr, mount + len + 1, mlen - len);
- 	    Tcl_ListObjAppendElement(NULL, resultPtr, mElt);
- 
  	    /*
  	     * No need to increment gLength, since we don't want to compare
  	     * mounts against mounts.
--- 1243,1261 ----
  	     */
  
  	    mount = Tcl_GetStringFromObj(mElt, &mlen);
! 	    norm = Tcl_FSGetNormalizedPath(NULL, pathPtr);
! 	    if (norm != NULL) {
! 		path = Tcl_GetStringFromObj(norm, &len);
! 		if (path[len-1] == '/') {
! 		    /*
! 		     * Deal with the root of the volume.
! 		     */
  
! 		    len--;
! 		}
! 		mElt = TclNewFSPathObj(pathPtr, mount + len + 1, mlen - len);
! 		Tcl_ListObjAppendElement(NULL, resultPtr, mElt);
  	    }
  	    /*
  	     * No need to increment gLength, since we don't want to compare
  	     * mounts against mounts.
diff --exclude Root -c -r tcl/generic/tclPathObj.c tcl-dev/generic/tclPathObj.c
*** tcl/generic/tclPathObj.c	2006-04-08 00:05:29.000000000 +1000
--- tcl-dev/generic/tclPathObj.c	2006-08-29 09:53:12.000000000 +1000
***************
*** 1599,1605 ****
  	retObj = srcFsPathPtr->translatedPathPtr;
      }
  
!     Tcl_IncrRefCount(retObj);
      return retObj;
  }
  
--- 1599,1607 ----
  	retObj = srcFsPathPtr->translatedPathPtr;
      }
  
!     if (retObj != NULL) {
! 	Tcl_IncrRefCount(retObj);
!     }
      return retObj;
  }
  
diff --exclude Root -c -r tcl/unix/tclUnixFile.c tcl-dev/unix/tclUnixFile.c
*** tcl/unix/tclUnixFile.c	2006-03-25 12:47:56.000000000 +1100
--- tcl-dev/unix/tclUnixFile.c	2006-08-29 09:54:10.000000000 +1000
***************
*** 1089,1094 ****
--- 1089,1097 ----
  	 */
  
  	validPathPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr);
+ 	if (validPathPtr == NULL) {
+ 	    return NULL;
+ 	}
  	Tcl_IncrRefCount(validPathPtr);
      }
  
diff --exclude Root -c -r tcl/win/tclWinFCmd.c tcl-dev/win/tclWinFCmd.c
*** tcl/win/tclWinFCmd.c	2005-12-14 09:43:18.000000000 +1100
--- tcl-dev/win/tclWinFCmd.c	2006-08-29 10:00:19.000000000 +1000
***************
*** 925,932 ****
      int ret;
  
      normSrcPtr = Tcl_FSGetNormalizedPath(NULL,srcPathPtr);
-     Tcl_WinUtfToTChar(Tcl_GetString(normSrcPtr), -1, &srcString);
      normDestPtr = Tcl_FSGetNormalizedPath(NULL,destPathPtr);
      Tcl_WinUtfToTChar(Tcl_GetString(normDestPtr), -1, &dstString);
  
      ret = TraverseWinTree(TraversalCopy, &srcString, &dstString, &ds);
--- 925,936 ----
      int ret;
  
      normSrcPtr = Tcl_FSGetNormalizedPath(NULL,srcPathPtr);
      normDestPtr = Tcl_FSGetNormalizedPath(NULL,destPathPtr);
+     if ((normSrcPtr == NULL) || (normDestPtr == NULL)) {
+ 	return TCL_ERROR;
+     }
+ 
+     Tcl_WinUtfToTChar(Tcl_GetString(normSrcPtr), -1, &srcString);
      Tcl_WinUtfToTChar(Tcl_GetString(normDestPtr), -1, &dstString);
  
      ret = TraverseWinTree(TraversalCopy, &srcString, &dstString, &ds);
***************
*** 996,1001 ****
--- 1000,1008 ----
  
  	Tcl_DString native;
  	normPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr);
+ 	if (normPtr == NULL) {
+ 	    return TCL_ERROR;
+ 	}
  	Tcl_WinUtfToTChar(Tcl_GetString(normPtr), -1, &native);
  	ret = DoRemoveDirectory(&native, recursive, &ds);
  	Tcl_DStringFree(&native);
diff --exclude Root -c -r tcl/win/tclWinFile.c tcl-dev/win/tclWinFile.c
*** tcl/win/tclWinFile.c	2006-03-15 06:34:30.000000000 +1100
--- tcl-dev/win/tclWinFile.c	2006-08-29 10:02:48.000000000 +1000
***************
*** 2483,2495 ****
      int linkAction)
  {
      if (toPtr != NULL) {
  	int res;
- #if 0
  	TCHAR *LinkTarget = (TCHAR *) Tcl_FSGetNativePath(toPtr);
- #else
- 	TCHAR *LinkTarget = (TCHAR *) Tcl_FSGetNativePath(
- 		Tcl_FSGetNormalizedPath(NULL, toPtr));
- #endif
  	TCHAR *LinkSource = (TCHAR *) Tcl_FSGetNativePath(pathPtr);
  
  	if (LinkSource == NULL || LinkTarget == NULL) {
--- 2483,2493 ----
      int linkAction)
  {
      if (toPtr != NULL) {
+ 	toPtr = Tcl_FSGetNormalizedPath(NULL, toPtr);
+     }
+     if (toPtr != NULL) {
  	int res;
  	TCHAR *LinkTarget = (TCHAR *) Tcl_FSGetNativePath(toPtr);
  	TCHAR *LinkSource = (TCHAR *) Tcl_FSGetNativePath(pathPtr);
  
  	if (LinkSource == NULL || LinkTarget == NULL) {
***************
*** 3256,3267 ****
--- 3254,3271 ----
  	 */
  
  	validPathPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr);
+ 	if (validPathPtr == NULL) {
+ 	    return NULL;
+ 	}
      } else {
  	/*
  	 * Make sure the normalized path is set.
  	 */
  
  	validPathPtr = Tcl_FSGetNormalizedPath(NULL, pathPtr);
+ 	if (validPathPtr == NULL) {
+ 	    return NULL;
+ 	}
  	Tcl_IncrRefCount(validPathPtr);
      }