Tcl Source Code

Check-in Differences
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Difference From d85e816231398a8e To ae00707ecea249d6

2013-09-18
19:13
merge release check-in: 6eb7e50d87 user: dgp tags: core-8-5-branch
2013-09-13
16:02
Added note to ChangeLog pointing to the fossil timeline for better logging. Closed-Leaf check-in: ae00707ece user: dgp tags: rc1, core-8-5-15, core-8-5-15-rc
14:14
merge 8.5; update changes check-in: 9f7491d11b user: dgp tags: core-8-5-15-rc
2013-09-03
16:04
some missed changes check-in: cb84ed25cc user: dgp tags: core-8-5-15-rc
2013-08-30
14:31
fix date check-in: d85e816231 user: dgp tags: rc0, core-8-5-15-rc
14:16
changes check-in: 7fa0fe032b user: dgp tags: core-8-5-15-rc

Changes to ChangeLog.










1
2
3
4
5
6
7









2013-08-30  Don Porter  <[email protected]>

	* generic/tcl.h:	Bump to 8.5.15 for release.
	* library/init.tcl:
	* tools/tcl.wse.in:
	* unix/configure.in:
	* unix/tcl.spec:
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A NOTE ON THE CHANGELOG:
Starting in early 2011, Tcl source code has been under the management of
fossil, hosted at http://core.tcl.tk/tcl/ .  Fossil presents a "Timeline"
view of changes made that is superior in every way to a hand edited log file.
Because of this, many Tcl developers are now out of the habit of maintaining
this log file.  You may still find useful things in it, but the Timeline is
a better first place to look now.
============================================================================

2013-08-30  Don Porter  <[email protected]>

	* generic/tcl.h:	Bump to 8.5.15 for release.
	* library/init.tcl:
	* tools/tcl.wse.in:
	* unix/configure.in:
	* unix/tcl.spec:

Changes to changes.

7764
7765
7766
7767
7768
7769
7770


7771
7772
7773
7774
7775
7776
7777
7778
7779


7780
7781
7782






7783

2013-06-17 (bug fix)[a876646] [:cntrl:] includes \x00 to \x1f (nijtmans)

2013-06-17 [string is space \u180e] => 1 (nijtmans)

2013-06-27 (bug fix)[983509] missing encodings for config values (nijtmans)



2013-06-27 (bug fix)[32afa6] corrected dirent64 check (griffin)

2013-07-06 tzdata updated to Olson's tzdata2013d (kenny)

2013-07-26 (bug fix)[6585b2] regexp {(\w).*?\1} abb (lane)

2013-07-29 [string is space \u202f] => 1 (nijtmans)

2013-08-01 [a0bc85] Limited support for fork with threads (for Rivet) (nijtmans)



2013-08-15 Errors from execution traces become errors of the command (porter)







--- Released 8.5.15, September 16, 2013 --- See ChangeLog for details ---







>
>
|








>
>



>
>
>
>
>
>
|
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793

2013-06-17 (bug fix)[a876646] [:cntrl:] includes \x00 to \x1f (nijtmans)

2013-06-17 [string is space \u180e] => 1 (nijtmans)

2013-06-27 (bug fix)[983509] missing encodings for config values (nijtmans)

2013-06-27 (bug fix)[34538b] apply DST in 2099 (lang)

2013-07-02 (bug fix)[32afa6] corrected dirent64 check (griffin)

2013-07-06 tzdata updated to Olson's tzdata2013d (kenny)

2013-07-26 (bug fix)[6585b2] regexp {(\w).*?\1} abb (lane)

2013-07-29 [string is space \u202f] => 1 (nijtmans)

2013-08-01 [a0bc85] Limited support for fork with threads (for Rivet) (nijtmans)

2013-08-14 (bug fix)[a16752] Missing command delete callbacks (porter)

2013-08-15 Errors from execution traces become errors of the command (porter)

2013-09-07 (bug fix) stop crashes in tclcompiler (kupries,porter)

2013-09-07 (bug fix)[86ceb4] have tm path favor first provider (neumann,porter)

2013-09-13 (bug fix)[bdd91c] crash in exec stack mem management (azazel)

--- Released 8.5.15, September 16, 2013 --- http://core.tcl.tk/tcl/ for details

Changes to generic/tclBasic.c.

1963
1964
1965
1966
1967
1968
1969
1970

1971
1972
1973
1974
1975
1976
1977
 *
 * Results:
 *	The return value is a token for the command, which can be used in
 *	future calls to Tcl_GetCommandName.
 *
 * Side effects:
 *	If a command named "cmdName" already exists for interp, it is
 * 	first deleted.  Then the new command is created from the arguments.

 *
 *	In the future, during bytecode evaluation when "cmdName" is seen as
 *	the name of a command by Tcl_EvalObj or Tcl_Eval, the object-based
 *	Tcl_ObjCmdProc proc will be called. When the command is deleted from
 *	the table, deleteProc will be called. See the manual entry for details
 *	on the calling sequence.
 *







|
>







1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
 *
 * Results:
 *	The return value is a token for the command, which can be used in
 *	future calls to Tcl_GetCommandName.
 *
 * Side effects:
 *	If a command named "cmdName" already exists for interp, it is
 *	first deleted.  Then the new command is created from the arguments.
 *	[***] (See below for exception).
 *
 *	In the future, during bytecode evaluation when "cmdName" is seen as
 *	the name of a command by Tcl_EvalObj or Tcl_Eval, the object-based
 *	Tcl_ObjCmdProc proc will be called. When the command is deleted from
 *	the table, deleteProc will be called. See the manual entry for details
 *	on the calling sequence.
 *
2029
2030
2031
2032
2033
2034
2035
2036


2037

















2038
2039
2040
2041
2042
2043
2044
2045
	tail = cmdName;
    }

    hPtr = Tcl_CreateHashEntry(&nsPtr->cmdTable, tail, &isNew);
    TclInvalidateNsPath(nsPtr);
    if (!isNew) {
	cmdPtr = Tcl_GetHashValue(hPtr);



	/*

















	 * Command already exists; delete it. Be careful to preserve any
	 * existing import links so we can restore them down below. That way,
	 * you can redefine a command and its import status will remain
	 * intact.
	 */

	oldRefPtr = cmdPtr->importRefPtr;
	cmdPtr->importRefPtr = NULL;








>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
	tail = cmdName;
    }

    hPtr = Tcl_CreateHashEntry(&nsPtr->cmdTable, tail, &isNew);
    TclInvalidateNsPath(nsPtr);
    if (!isNew) {
	cmdPtr = Tcl_GetHashValue(hPtr);

	/* Command already exists. */

	/*
	 * [***] This is wrong.  See Tcl Bug a16752c252.  
	 * However, this buggy behavior is kept under particular
	 * circumstances to accommodate deployed binaries of the
	 * "tclcompiler" program. http://sourceforge.net/projects/tclpro/
	 * that crash if the bug is fixed.
	 */

	if (cmdPtr->objProc == TclInvokeStringCommand
		&& cmdPtr->clientData == clientData
		&& cmdPtr->deleteData == clientData
		&& cmdPtr->deleteProc == deleteProc) {
	    cmdPtr->objProc = proc;
	    cmdPtr->objClientData = clientData;
	    return (Tcl_Command) cmdPtr;
	}

	/*
	 * Otherwise, we delete the old command. Be careful to preserve any
	 * existing import links so we can restore them down below. That way,
	 * you can redefine a command and its import status will remain
	 * intact.
	 */

	oldRefPtr = cmdPtr->importRefPtr;
	cmdPtr->importRefPtr = NULL;

Changes to generic/tclExecute.c.

2307
2308
2309
2310
2311
2312
2313

2314
2315
2316
2317
2318
2319
2320
	if (moved) {
	    /*
	     * Change the global data to point to the new stack.
	     */

	    initCatchTop += moved;
	    catchTop += moved;

	    initTosPtr += moved;
	    tosPtr += moved;
	    esPtr = iPtr->execEnvPtr->execStackPtr;
	}

	/*
	 * Expand the list at stacktop onto the stack; free the list. Knowing







>







2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
	if (moved) {
	    /*
	     * Change the global data to point to the new stack.
	     */

	    initCatchTop += moved;
	    catchTop += moved;
	    bcFramePtr = (CmdFrame *) (initCatchTop + codePtr->maxExceptDepth + 1);
	    initTosPtr += moved;
	    tosPtr += moved;
	    esPtr = iPtr->execEnvPtr->execStackPtr;
	}

	/*
	 * Expand the list at stacktop onto the stack; free the list. Knowing

Changes to library/tm.tcl.

243
244
245
246
247
248
249









250
251
252
253
254
255
256
			continue
		    }
		    if {[catch {package vcompare $pkgversion 0}]} {
			# Ignore everything where the version part is
			# not acceptable to "package vcompare".
			continue
		    }










		    # We have found a candidate, generate a "provide
		    # script" for it, and remember it.  Note that we
		    # are using ::list to do this; locally [list]
		    # means something else without the namespace
		    # specifier.








>
>
>
>
>
>
>
>
>







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
			continue
		    }
		    if {[catch {package vcompare $pkgversion 0}]} {
			# Ignore everything where the version part is
			# not acceptable to "package vcompare".
			continue
		    }

		    if {[package ifneeded $pkgname $pkgversion] ne {}} {
			# There's already a provide script registered for
			# this version of this package.  Since all units of
			# code claiming to be the same version of the same
			# package ought to be identical, just stick with
			# the one we already have.
			continue
		    }

		    # We have found a candidate, generate a "provide
		    # script" for it, and remember it.  Note that we
		    # are using ::list to do this; locally [list]
		    # means something else without the namespace
		    # specifier.