diff options
| author | dgp <dgp@users.sourceforge.net> | 2015-07-15 15:34:43 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2015-07-15 15:34:43 (GMT) |
| commit | bbb66ad482af1475bbb5888fdd92f31938817119 (patch) | |
| tree | f2e86ccc1de326971962864a09d6a8553b0eed32 | |
| parent | 593c09234c072649be17dd4b5cb98fe20ebdbe73 (diff) | |
| parent | 7b49d1632e55010e4cc776e0bc02e934d6cfbd3e (diff) | |
| download | tcl-bbb66ad482af1475bbb5888fdd92f31938817119.zip tcl-bbb66ad482af1475bbb5888fdd92f31938817119.tar.gz tcl-bbb66ad482af1475bbb5888fdd92f31938817119.tar.bz2 | |
merge trunk
| -rw-r--r-- | doc/exit.n | 2 | ||||
| -rw-r--r-- | generic/tclFileSystem.h | 4 | ||||
| -rw-r--r-- | generic/tclIOUtil.c | 38 | ||||
| -rw-r--r-- | unix/tclUnixPort.h | 10 |
4 files changed, 28 insertions, 26 deletions
@@ -35,7 +35,7 @@ proc main {} { if {[catch {main} msg options]} { puts stderr "unexpected script error: $msg" - if {[info exist env(DEBUG)]} { + if {[info exists env(DEBUG)]} { puts stderr "---- BEGIN TRACE ----" puts stderr [dict get $options -errorinfo] puts stderr "---- END TRACE ----" diff --git a/generic/tclFileSystem.h b/generic/tclFileSystem.h index 6be3e03..1eec7ff 100644 --- a/generic/tclFileSystem.h +++ b/generic/tclFileSystem.h @@ -33,7 +33,7 @@ MODULE_SCOPE void TclFSSetPathDetails(Tcl_Obj *pathPtr, const Tcl_Filesystem *fsPtr, ClientData clientData); MODULE_SCOPE Tcl_Obj * TclFSNormalizeAbsolutePath(Tcl_Interp *interp, Tcl_Obj *pathPtr); -MODULE_SCOPE int TclFSEpoch(void); +MODULE_SCOPE size_t TclFSEpoch(void); /* * Private shared variables for use by tclIOUtil.c and tclPathObj.c @@ -55,7 +55,7 @@ MODULE_SCOPE Tcl_PathType TclFSNonnativePathType(const char *pathPtr, MODULE_SCOPE Tcl_PathType TclGetPathType(Tcl_Obj *pathPtr, const Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr, Tcl_Obj **driveNameRef); -MODULE_SCOPE int TclFSEpochOk(int filesystemEpoch); +MODULE_SCOPE int TclFSEpochOk(size_t filesystemEpoch); MODULE_SCOPE int TclFSCwdIsNative(void); MODULE_SCOPE Tcl_Obj * TclWinVolumeRelativeNormalize(Tcl_Interp *interp, const char *path, Tcl_Obj **useThisCwdPtr); diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 16a1a58..5c6e376 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -59,12 +59,12 @@ typedef struct FilesystemRecord { typedef struct { int initialized; - int cwdPathEpoch; - int filesystemEpoch; + size_t cwdPathEpoch; + size_t filesystemEpoch; Tcl_Obj *cwdPathPtr; ClientData cwdClientData; FilesystemRecord *filesystemList; - int claims; + size_t claims; } ThreadSpecificData; /* @@ -215,7 +215,7 @@ static FilesystemRecord nativeFilesystemRecord = { * trigger cache cleanup in all threads. */ -static int theFilesystemEpoch = 1; +static size_t theFilesystemEpoch = 1; /* * Stores the linked list of filesystems. A 1:1 copy of this list is also @@ -231,7 +231,7 @@ TCL_DECLARE_MUTEX(filesystemMutex) */ static Tcl_Obj *cwdPathPtr = NULL; -static int cwdPathEpoch = 0; +static size_t cwdPathEpoch = 0; static ClientData cwdClientData = NULL; TCL_DECLARE_MUTEX(cwdMutex) @@ -629,7 +629,7 @@ FsGetFirstFilesystem(void) int TclFSEpochOk( - int filesystemEpoch) + size_t filesystemEpoch) { return (filesystemEpoch == 0 || filesystemEpoch == theFilesystemEpoch); } @@ -650,7 +650,7 @@ Disclaim(void) tsdPtr->claims--; } -int +size_t TclFSEpoch(void) { ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&fsDataKey); @@ -697,7 +697,9 @@ FsUpdateCwd( cwdClientData = TclNativeDupInternalRep(clientData); } - cwdPathEpoch++; + if (++cwdPathEpoch == 0) { + ++cwdPathEpoch; + } tsdPtr->cwdPathEpoch = cwdPathEpoch; Tcl_MutexUnlock(&cwdMutex); @@ -774,7 +776,9 @@ TclFinalizeFilesystem(void) } fsRecPtr = tmpFsRecPtr; } - theFilesystemEpoch++; + if (++theFilesystemEpoch == 0) { + ++theFilesystemEpoch; + } filesystemList = NULL; /* @@ -807,7 +811,9 @@ void TclResetFilesystem(void) { filesystemList = &nativeFilesystemRecord; - theFilesystemEpoch++; + if (++theFilesystemEpoch == 0) { + ++theFilesystemEpoch; + } #ifdef _WIN32 /* @@ -892,7 +898,9 @@ Tcl_FSRegister( * conceivably now belong to different filesystems. */ - theFilesystemEpoch++; + if (++theFilesystemEpoch == 0) { + ++theFilesystemEpoch; + } Tcl_MutexUnlock(&filesystemMutex); return TCL_OK; @@ -957,7 +965,9 @@ Tcl_FSUnregister( * (which would of course lead to memory exceptions). */ - theFilesystemEpoch++; + if (++theFilesystemEpoch == 0) { + ++theFilesystemEpoch; + } ckfree(fsRecPtr); @@ -1288,7 +1298,9 @@ Tcl_FSMountsChanged( */ Tcl_MutexLock(&filesystemMutex); - theFilesystemEpoch++; + if (++theFilesystemEpoch == 0) { + ++theFilesystemEpoch; + } Tcl_MutexUnlock(&filesystemMutex); } diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 123abec..2728957 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -443,16 +443,6 @@ extern int gettimeofday(struct timeval *tp, /* *--------------------------------------------------------------------------- - * Make sure that L_tmpnam is defined. - *--------------------------------------------------------------------------- - */ - -#ifndef L_tmpnam -# define L_tmpnam 100 -#endif - -/* - *--------------------------------------------------------------------------- * The following macro defines the type of the mask arguments to select: *--------------------------------------------------------------------------- */ |
