diff options
author | dgp <dgp@users.sourceforge.net> | 2024-09-23 16:38:30 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2024-09-23 16:38:30 (GMT) |
commit | cd91553ab5cce8811e9e68bf920f14063a85c7d3 (patch) | |
tree | d3c0da39fbd9e23d2cb9ef29166124ea1f4a6aad | |
parent | 6db25dbb4a9efbd48d795450836aeeb3ccfd6580 (diff) | |
parent | 74097337fcadf1c614db88a4ef9952825d68e86b (diff) | |
download | tcl-cd91553ab5cce8811e9e68bf920f14063a85c7d3.zip tcl-cd91553ab5cce8811e9e68bf920f14063a85c7d3.tar.gz tcl-cd91553ab5cce8811e9e68bf920f14063a85c7d3.tar.bz2 |
Merge trunk; Remove "Known Bugs" that are now fixed; changes file wordsmithing
-rw-r--r-- | changes.md | 14 | ||||
-rw-r--r-- | doc/clock.n | 8 | ||||
-rw-r--r-- | doc/coroutine.n | 6 | ||||
-rw-r--r-- | doc/msgcat.n | 2 | ||||
-rw-r--r-- | generic/tclBasic.c | 2 | ||||
-rw-r--r-- | generic/tclBinary.c | 2 | ||||
-rw-r--r-- | generic/tclCkalloc.c | 2 | ||||
-rw-r--r-- | generic/tclCmdIL.c | 2 | ||||
-rw-r--r-- | generic/tclCompile.c | 5 | ||||
-rw-r--r-- | generic/tclEncoding.c | 2 | ||||
-rw-r--r-- | generic/tclIO.c | 2 | ||||
-rw-r--r-- | generic/tclIORChan.c | 4 | ||||
-rw-r--r-- | generic/tclIORTrans.c | 4 | ||||
-rw-r--r-- | generic/tclIOUtil.c | 22 | ||||
-rw-r--r-- | generic/tclIndexObj.c | 2 | ||||
-rw-r--r-- | generic/tclListObj.c | 14 | ||||
-rw-r--r-- | generic/tclLoad.c | 2 | ||||
-rw-r--r-- | generic/tclOOProp.c | 2 | ||||
-rw-r--r-- | generic/tclProc.c | 2 | ||||
-rw-r--r-- | generic/tclStrToD.c | 4 | ||||
-rw-r--r-- | generic/tclStringObj.c | 6 | ||||
-rw-r--r-- | generic/tclTest.c | 4 | ||||
-rw-r--r-- | generic/tclTestABSList.c | 2 | ||||
-rw-r--r-- | generic/tclThreadAlloc.c | 2 | ||||
-rw-r--r-- | generic/tclTrace.c | 2 | ||||
-rw-r--r-- | generic/tclUtil.c | 4 | ||||
-rw-r--r-- | generic/tclVar.c | 4 | ||||
-rw-r--r-- | tests/list.test | 10 | ||||
-rw-r--r-- | unix/tclUnixFCmd.c | 4 | ||||
-rw-r--r-- | win/tclWinConsole.c | 4 |
30 files changed, 79 insertions, 66 deletions
@@ -50,7 +50,7 @@ writing Tcl scripts. (If you need a particular precision, use `format`.) - Removed pre-Tcl 8 legacies: `case`, `puts` and `read` variant syntaxes. - Removed subcommands [`trace variable`|`vdelete`|`vinfo`] - - No `-eofchar` option for channels anymore for writing. + - Removed `-eofchar` option for write channels. - On Windows 10+ (Version 1903 or higher), system encoding is always utf-8. - `%b`/`%d`/`%o`/`%x` format modifiers (without size modifier) for `format` and `scan` always truncate to 32-bits on all platforms. @@ -60,6 +60,9 @@ writing Tcl scripts. more comprehensible semantics.) ## Incompatibilities in C public interface + - Extensions built against Tcl 8.6 and before will not work with Tcl 9.0; + ABI compatibility was a non-goal for 9.0. In _most_ cases, rebuilding + against Tcl 9.0 should work except when a removed API function is used. - Many arguments expanded type from `int` to `Tcl_Size`, a signed integer type large enough to support 64-bit sized memory objects. The constant `TCL_AUTO_LENGTH` is a value of that type that indicates that @@ -68,7 +71,7 @@ writing Tcl scripts. - Introduced versioning of the `Tcl_ObjType` struct - Removed macros `CONST*`: Tcl 9 support means dropping Tcl 8.3 support. (Replaced with standard C `const` keyword going forward.) - - Removed routines: + - Removed API functions: `Tcl_Backslash()`, `Tcl_*VA()`, @@ -80,9 +83,6 @@ writing Tcl scripts. `Tcl_UniCharN(case)cmp()`, `Tcl_UniCharCaseMatch()` -Note that builds of extensions against Tcl 8.6 and before are expected to not work with Tcl 9.0; ABI compatibility was a non-goal for 9.0. -In _most_ cases, rebuilding the code against Tcl 9.0 should work except when a removed API function is used. - # New Features ## New commands @@ -136,10 +136,8 @@ In _most_ cases, rebuilding the code against Tcl 9.0 should work except when a r - `method -export`, `method -unexport` # Known bugs - - [Command line built with list not properly quoted](https://core.tcl-lang.org/tcl/tktview/e38dce) - [changed behaviour wrt command names, namespaces and resolution](https://core.tcl-lang.org/tcl/tktview/f14b33) - - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) - [zlib-8.8, zlib-8.16 fail on Fedora 40, gcc 14.1.1](https://core.tcl-lang.org/tcl/tktview/73d5cb) - [Temporary folder with file "tcl9registry13.dll" remains after "exit"](https://core.tcl-lang.org/tcl/tktview/6ce3c0) -
\ No newline at end of file + diff --git a/doc/clock.n b/doc/clock.n index e8031de..a28254e 100644 --- a/doc/clock.n +++ b/doc/clock.n @@ -584,7 +584,7 @@ On input, accepts a string of digits (or floating point with the time fraction) and interprets it as an Astronomical Julian Day Number (JDN/JD). The Astronomical Julian Date is a count of the number of calendar days that have elapsed since 1 January, 4713 BCE of the proleptic -Julian calendar, which contains also the time fraktion (after floating point). +Julian calendar, which contains also the time fraction (after floating point). The epoch time of 1 January 1970 corresponds to Astronomical JDN 2440587.5. This value corresponds the julian day used in sqlite-database, and is the same as result of \fBselect julianday(:seconds, 'unixepoch')\fR. @@ -596,7 +596,7 @@ On input, accepts a string of digits (or floating point with the time fraction) and interprets it as a Calendar Julian Day Number. The Calendar Julian Date is a count of the number of calendar days that have elapsed since 1 January, 4713 BCE of the proleptic -Julian calendar, which contains also the time fraktion (after floating point). +Julian calendar, which contains also the time fraction (after floating point). The epoch time of 1 January 1970 corresponds to Astronomical JDN 2440588. .IP \fB%Es\fR This affects similar to \fB%s\fR, but in opposition to \fB%s\fR it parses @@ -642,7 +642,7 @@ On output, produces a two-digit number giving the hour of the day On output, produces a three-digit number giving the day of the year (001-366). On input, accepts such a number. .IP \fB%J\fR -On output, produces a string of digits giving the calendar Julian Day Number. +On output, produces a string of digits giving the Julian Day Number. On input, accepts a string of digits and interprets it as a Julian Day Number. The Julian Day Number is a count of the number of calendar days that have elapsed since 1 January, 4713 BCE of the proleptic @@ -933,7 +933,7 @@ acceptable formats are .QW "\fIdd monthname yy\fR" , .QW "?\fICC\fR?\fIyymmdd\fR" , and -.QW "\fIdd\fB\-\fImonthname\fB\-\fR?\fICC\fR?\fIyy\fR" . +.QW "\fIdd\fB-\fImonthname\fB-\fR?\fICC\fR?\fIyy\fR" . The default year is the current year. If the year is less than 100, we treat the years 00-68 as 2000-2068 and the years 69-99 as 1969-1999. Not all platforms can represent the years 38-70, so diff --git a/doc/coroutine.n b/doc/coroutine.n index cb4d3dd..6dae482 100644 --- a/doc/coroutine.n +++ b/doc/coroutine.n @@ -98,7 +98,7 @@ with quite a bit of similarity to \fBcoroprobe\fR. However, with .VS "8.7, TIP383" The coroutine is not immediately resumed after the injection has been done. A consequence of this is that multiple injections may be done before the -coroutine is resumed. There injected commands are performed in \fIreverse +coroutine is resumed. The injected commands are performed in \fIreverse order of definition\fR (that is, they are internally stored on a stack). .VE "8.7, TIP383" .IP \(bu @@ -245,10 +245,6 @@ puts [\fBcoroprobe \fIcollect\fR set accumulator] puts [\fIcollect\fR] # ==> 123 {abc def} 456 pqr RST xyz .CE -.PP -This example shows a simple coroutine that collects non-empty values and -returns a list of them when not given an argument. It also shows how we can -look inside the coroutine to find out what it is doing. .VE "8.7, TIP383" .SS "DETAILED SEMANTICS" .PP diff --git a/doc/msgcat.n b/doc/msgcat.n index ad341c1..18b6da3 100644 --- a/doc/msgcat.n +++ b/doc/msgcat.n @@ -98,7 +98,7 @@ use the result. If an application is written for a single language in this fashion, then it is easy to add support for additional languages later simply by defining new message catalog entries. .RE -.\" COMMAND: mcc +.\" COMMAND: mcn .TP \fB::msgcat::mcn \fInamespace src-string\fR ?\fIarg arg ...\fR? .VS "TIP 490" diff --git a/generic/tclBasic.c b/generic/tclBasic.c index a979ab9..dca1088 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -9756,7 +9756,7 @@ TclNRCoroutineObjCmd( /* * #280. * Provide the new coroutine with its own copy of the lineLABCPtr - * hashtable for literal command arguments in bytecode. Note that that + * hashtable for literal command arguments in bytecode. Note that * CFWordBC chains are not duplicated, only the entrypoints to them. This * means that in the presence of coroutines each chain is potentially a * tree. Like the chain -> tree conversion of the CmdFrame stack. diff --git a/generic/tclBinary.c b/generic/tclBinary.c index a78f955..d8feab7 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -2399,7 +2399,7 @@ DeleteScanNumberCache( * * NOTES -- * - * Some measurements show that it is faster to use a table to to perform + * Some measurements show that it is faster to use a table to perform * uuencode and base64 value encoding than to calculate the output (at * least on intel P4 arch). * diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index be741a3..bf2b12c 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -1274,7 +1274,7 @@ TclAllocElemsEx( * * Attempts to allocate (oldPtr == NULL) or reallocate memory of the * requested size plus some more for future growth. The amount of - * reallocation is adjusted depending on on failure. + * reallocation is adjusted depending on failure. * * * Results: diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 19a6226..225f634 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -2295,7 +2295,7 @@ Tcl_LassignObjCmd( } /* * Must incrref elemObj. If the var name being set is same as the - * the list value, ObjSetVar2 will shimmer the list to a VAR freeing + * list value, ObjSetVar2 will shimmer the list to a VAR freeing * the elements in the list (in case list refCount was 1) BEFORE * the elemObj is stored in the var. See tests 6.{25,26} */ diff --git a/generic/tclCompile.c b/generic/tclCompile.c index db5a5fd..edf1ca7 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2493,7 +2493,7 @@ TclCompileTokens( * commands. See the branch below for TCL_TOKEN_COMMAND, where the * adjustment being tracked here is taken into account. The good * thing is a table of everything is not needed, just the number of - * lines to to add as correction. + * lines to add as correction. */ if ((length == 1) && (buffer[0] == ' ') && @@ -2688,8 +2688,7 @@ void TclCompileExprWords( Tcl_Interp *interp, /* Used for error and status reporting. */ Tcl_Token *tokenPtr, /* Points to first in an array of word tokens - * tokens for the expression to compile - * inline. */ + * for the expression to compile inline. */ size_t numWords1, /* Number of word tokens starting at tokenPtr. * Must be at least 1. Each word token * contains one or more subtokens. */ diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 97f9f2b..ab53e6d 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -1922,7 +1922,7 @@ LoadEncodingFile( * little-endian systems. * * Results: - * Returns the new Tcl_Encoding, or NULL if it could could + * Returns the new Tcl_Encoding, or NULL if it could * not be created because the file contained invalid data. * * Side effects: diff --git a/generic/tclIO.c b/generic/tclIO.c index b89f415..7e3f575 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10563,7 +10563,7 @@ Tcl_GetChannelNames( * * Tcl_GetChannelNamesEx -- * - * Return the names of open channels in the interp filtered filtered + * Return the names of open channels in the interp filtered * through a pattern. If pattern is NULL, it returns all the open * channels. * diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 859366f..beb4d2c 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -706,7 +706,7 @@ TclChanCreateObjCmd( } /* - * Register the channel in the I/O system, and in our our map for 'chan + * Register the channel in the I/O system, and in our map for 'chan * postevent'. */ @@ -2983,7 +2983,7 @@ ForwardProc( * quiescent. Because of this we can treat the data as belonging to us, * without fear of race conditions. I.e. we can read and write as we like. * - * The only thing we cannot be sure of is the resultPtr. This can be be + * The only thing we cannot be sure of is the resultPtr. This can be * NULLed if the originating thread went away while the event is handled * here now. */ diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c index d2853e2..16c357f 100644 --- a/generic/tclIORTrans.c +++ b/generic/tclIORTrans.c @@ -683,7 +683,7 @@ TclChanPushObjCmd( rtPtr->parent); /* - * Register the transform in our our map for proper handling of deleted + * Register the transform in our map for proper handling of deleted * interpreters and/or threads. */ @@ -2470,7 +2470,7 @@ ForwardProc( * quiescent. Because of this we can treat the data as belonging to us, * without fear of race conditions. I.e. we can read and write as we like. * - * The only thing we cannot be sure of is the resultPtr. This can be be + * The only thing we cannot be sure of is the resultPtr. This can be * NULLed if the originating thread went away while the event is handled * here now. */ diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 4f34053..26d7303 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -1223,7 +1223,7 @@ FsAddMountsToGlobResult( * * The reason for the exception in 2,3 for the native filesystem is that * the native filesystem claims every file without determining whether - * whether the file exists, or even whether the pathname makes sense. + * the file exists, or even whether the pathname makes sense. * *---------------------------------------------------------------------- */ @@ -2018,7 +2018,7 @@ Tcl_GetErrno(void) * None. * * Side effects: - * Modifies the the Tcl error code value. + * Modifies the Tcl error code value. * *---------------------------------------------------------------------- */ @@ -2769,7 +2769,7 @@ Tcl_FSGetCwd( if (retVal == NULL) { /* - * The current directory could not not determined. Reset the + * The current directory could not be determined. Reset the * current direcory to ensure, for example, that 'pwd' does actually * throw the correct error in Tcl. This is tested for in the test * suite on unix. @@ -2944,7 +2944,7 @@ Tcl_FSChdir( if (cd != oldcd) { /* * Call getCwdProc() and store the resulting internal handle to - * compare things with it later. This might might not be + * compare things with it later. This might not be * exactly the same string as that of the fully normalized * pathname. For example, for the Windows internal handle the * separator is the backslash character. On Unix it might well @@ -3512,7 +3512,7 @@ DivertUnloadFile( if (tvdlPtr->divertedFilesystem == NULL) { /* - * Use the function for the native filsystem, which works works even at + * Use the function for the native filsystem, which works even at * this late stage. */ @@ -3575,7 +3575,7 @@ void * Tcl_FindSymbol( Tcl_Interp *interp, /* The relevant interpreter. */ Tcl_LoadHandle loadHandle, /* A handle for the loaded object. */ - const char *symbol) /* The name name of the symbol to resolve. */ + const char *symbol) /* The name of the symbol to resolve. */ { return loadHandle->findSymbolProcPtr(interp, loadHandle, symbol); } @@ -3954,7 +3954,7 @@ TclFSNonnativePathType( /* If not NULL, a place to store the length of * the volume name if the pathname is absolute. */ Tcl_Obj **driveNameRef) /* If not NULL, a place to store a pointer to - * an object having its its refCount already + * an object having its refCount already * incremented, and contining the name of the * volume if the pathname is absolute. */ { @@ -3970,7 +3970,7 @@ TclFSNonnativePathType( Claim(); while (fsRecPtr != NULL) { /* - * Skip the the native filesystem because otherwise some of the tests + * Skip the native filesystem because otherwise some of the tests * in the Tcl testsuite might fail because some of the tests * artificially change the current platform (between win, unix) but the * list of volumes obtained by calling fsRecPtr->fsPtr->listVolumesProc @@ -4033,7 +4033,7 @@ TclFSNonnativePathType( Tcl_DecrRefCount(thisFsVolumes); if (type == TCL_PATH_ABSOLUTE) { /* - * No need to to examine additional filesystems. + * No need to examine additional filesystems. */ break; @@ -4284,7 +4284,7 @@ Tcl_FSCreateDirectory( * * Tcl_FSCopyDirectory -- * - * If both pathnames correspond to the the same filesystem, calls + * If both pathnames correspond to the same filesystem, calls * 'copyDirectoryProc' of that filesystem. * * Results: @@ -4348,7 +4348,7 @@ Tcl_FSRemoveDirectory( * Otherwise, removes the directory and all its * contents. */ Tcl_Obj **errorPtr) /* If not NULL and an error occurs, stores a - * place to store a a pointer to a new + * place to store a pointer to a new * object having a refCount of 1 and containing * the name of the file that produced an error. */ { diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 3e92b5a..2dbc6f6 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -829,7 +829,7 @@ Tcl_WrongNumArgs( } /* - * If processing an an ensemble implementation, rewrite the results in + * If processing an ensemble implementation, rewrite the results in * terms of how the ensemble was invoked. */ diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 975bc2e..36914bc 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -1616,8 +1616,8 @@ TclListObjRange( * TclListObjGetElement -- * * Returns a single element from the array of the elements in a list - * object, without doing doing any bounds checking. Caller must ensure - * that ObjPtr of of type 'tclListType' and that index is valid for the + * object, without doing any bounds checking. Caller must ensure + * that ObjPtr of type 'tclListType' and that index is valid for the * list. * *---------------------------------------------------------------------- @@ -1776,6 +1776,16 @@ Tcl_ListObjAppendList( } if (elemCount <= 0) { + /* + * Note that when elemCount <= 0, this routine is logically a + * no-op, removing and adding no elements to the list. However, by removing + * the string representation, we get the important side effect that the + * resulting listPtr is a list in canonical form. This is important. + * Resist any temptation to optimize this case further. See bug [e38dce74e2]. + */ + if (!ListObjIsCanonical(toObj)) { + TclInvalidateStringRep(toObj); + } /* Nothing to do. Note AFTER check for list above */ return TCL_OK; } diff --git a/generic/tclLoad.c b/generic/tclLoad.c index dd4d470..95f9c22 100644 --- a/generic/tclLoad.c +++ b/generic/tclLoad.c @@ -535,7 +535,7 @@ Tcl_LoadObjCmd( * * Tcl_UnloadObjCmd -- * - * Implements the the "unload" Tcl command. See the + * Implements the "unload" Tcl command. See the * user documentation for details on what it does. * * Results: diff --git a/generic/tclOOProp.c b/generic/tclOOProp.c index a8b2002..7a66f7b 100644 --- a/generic/tclOOProp.c +++ b/generic/tclOOProp.c @@ -736,7 +736,7 @@ SortPropList( * * TclOOGetAllObjectProperties -- * - * Get the sorted list of all properties known to a object, including to its + * Get the sorted list of all properties known to an object, including to * its classes. Manages a cache so this operation is usually cheap. * * ---------------------------------------------------------------------- diff --git a/generic/tclProc.c b/generic/tclProc.c index 4add38e..52ca08e 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -2395,7 +2395,7 @@ ProcBodyFree( * * How to manage the internal representations of lambda term objects. * Syntactically they look like a two- or three-element list, where the - * first element is the formal arguments, the second is the the body, and + * first element is the formal arguments, the second is the body, and * the (optional) third is the namespace to execute the lambda term * within (the global namespace is assumed if it is absent). * diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index f6e0e3c..c6778ce 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -3174,7 +3174,7 @@ ShorteningInt64Conversion( /* * Does the current digit put us on the low side of the exact value - * but within within roundoff of being exact? + * but within roundoff of being exact? */ if (b < mplus || (b == mplus @@ -3572,7 +3572,7 @@ ShorteningBignumConversionPowD( /* * Does the current digit put us on the low side of the exact value - * but within within roundoff of being exact? + * but within roundoff of being exact? */ r1 = mp_cmp_mag(&b, (m2plus > m2minus)? &mplus : &mminus); diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index f4428d1..059f8dd 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -597,15 +597,15 @@ TclGetUniChar( } /* - * Optimize the ByteArray case: N need need to convert to a string to - * perform the indexing operation. + * Optimize the ByteArray case: no need to convert to a string to + * perform the indexing operation. */ if (TclIsPureByteArray(objPtr)) { Tcl_Size length = 0; unsigned char *bytes = Tcl_GetBytesFromObj(NULL, objPtr, &length); if (index >= length) { - return -1; + return -1; } return bytes[index]; diff --git a/generic/tclTest.c b/generic/tclTest.c index 6c25770..d2e2aaa 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -8378,7 +8378,7 @@ InterpCmdResolver( * compilation (e.g. in TclProcCompileProc) * * When these conditions hold, this function resolves the - * passed-in cmd literal into a cmd "y", which is taken from the + * passed-in cmd literal into a cmd "y", which is taken from * the global namespace (for simplicity). */ @@ -8404,7 +8404,7 @@ InterpCmdResolver( * * When these conditions hold, this function resolves the * passed-in cmd literal into a cmd "y" or "Y" depending on the - * context. The resolved procs are taken from the the global + * context. The resolved procs are taken from the global * namespace (for simplicity). */ diff --git a/generic/tclTestABSList.c b/generic/tclTestABSList.c index 2e554e7..7e853e4 100644 --- a/generic/tclTestABSList.c +++ b/generic/tclTestABSList.c @@ -480,7 +480,7 @@ static int my_LStringObjRange( * * my_LStringObjReverse -- * - * Creates a new Obj with the the order of the elements in the lstring + * Creates a new Obj with the order of the elements in the lstring * value reversed, where first is last and last is first, etc. * * Results: diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 124f655..152b43d 100644 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -69,7 +69,7 @@ typedef union Block { #define blockReqSize b.reqSize /* - * The following defines the minimum and and maximum block sizes and the number + * The following defines the minimum and maximum block sizes and the number * of buckets in the bucket cache. */ diff --git a/generic/tclTrace.c b/generic/tclTrace.c index 18eb1cc..24f4d31 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -1455,7 +1455,7 @@ TclCheckInterpTraces( if (!(tracePtr->flags & TCL_TRACE_EXEC_IN_PROGRESS)) { /* - * The proc invoked might delete the traced command which which + * The proc invoked might delete the traced command which * might try to free tracePtr. We want to use tracePtr until the * end of this if section, so we use Tcl_Preserve() and * Tcl_Release() to be sure it is not freed while we still need diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 9145a95..178df5f 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -3415,7 +3415,7 @@ GetWideForIndex( * Results: * TCL_OK * - * The index is stored at the address given by by 'indexPtr'. + * The index is stored at the address given by 'indexPtr'. * * TCL_ERROR * @@ -3700,7 +3700,7 @@ GetEndOffsetFromObj( * Encodes end+1. This is distinguished from end+n as noted * in function header. * NOTE: this may wrap around if the caller passes (as lset does) - * listLen-1 as endValue and and listLen is 0. The -1 will be + * listLen-1 as endValue and listLen is 0. The -1 will be * interpreted as FF...FF and adding 1 will result in 0 which * is what we want. Callers like lset which pass in listLen-1 == -1 * as endValue will have to adjust accordingly. diff --git a/generic/tclVar.c b/generic/tclVar.c index 74647ee..5320950 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -745,7 +745,7 @@ TclObjLookupVarEx( TclFreeInternalRep(cachedNamePtr); /* - * Now go ahead and convert it the the "localVarName" type, + * Now go ahead and convert it to the "localVarName" type, * since we suspect at least some use of the value as a * varname and we want to resolve it quickly. */ @@ -2990,7 +2990,7 @@ Tcl_LappendObjCmd( * * These functions implement the "array for" Tcl command. * array for {k v} a {} - * The array for command iterates over the array, setting the the + * The array for command iterates over the array, setting the * specified loop variables, and executing the body each iteration. * * ArrayForObjCmd() is the standard wrapper around ArrayForNRCmd(). diff --git a/tests/list.test b/tests/list.test index 905a3d3..a4689ae 100644 --- a/tests/list.test +++ b/tests/list.test @@ -64,6 +64,16 @@ test list-1.30 {basic null treatment} { set e "\x00abc xyz" string equal $l $e } 1 +test list-1.31 {bug [e38dce74e2]} { + set l #foo + set e {} + list {*}$l {*}$e +} {{#foo}} +test list-1.32 {bug [e38dce74e2]} { + set l " #foo" + set e {} + list {*}$l {*}$e +} {{#foo}} # For the next round of tests create a list and then pick it apart # with "index" to make sure that we get back exactly what went in. diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index fab9c32..d9429c8 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -2066,7 +2066,7 @@ TclpObjNormalizePath( if (haveRealpath) { if (nextCheckpoint == 0) { /* - * The path contains at most one component, e.g. '/foo' or '/', so + * The path contains at most one component, e.g. '/foo' or '/', * so there is nothing to resolve. Also, on some platforms * 'Realpath' transforms an empty string into the normalized pwd, * which is the wrong answer. @@ -2097,7 +2097,7 @@ TclpObjNormalizePath( * Uncommenting this would mean that this native filesystem * routine claims the path is normalized if the file exists, * which would permit the caller to avoid iterating through - * other filesystems filesystems. Saving lots of calls is + * other filesystems. Saving lots of calls is * probably worth the extra access() time, but in the common * case that no other filesystems are registered this is an * unnecessary expense. diff --git a/win/tclWinConsole.c b/win/tclWinConsole.c index ee04b05..7b73780 100644 --- a/win/tclWinConsole.c +++ b/win/tclWinConsole.c @@ -1482,7 +1482,7 @@ static void ConsoleWatchProc( void *instanceData, /* Console state. */ int newMask) /* What events to watch for, one of - * of TCL_READABLE, TCL_WRITABLE */ + * TCL_READABLE, TCL_WRITABLE */ { ConsoleChannelInfo **nextPtrPtr, *ptr; ConsoleChannelInfo *chanInfoPtr = (ConsoleChannelInfo *)instanceData; @@ -1719,7 +1719,7 @@ ConsoleReaderThread( /* * Loop back to recheck for exit conditions changes while the - * the lock was not held. + * lock was not held. */ continue; } |