Compare commits

...
Author SHA1 Message Date
Joe Mistachkin ebb646039f Also finalize the condition variables for each notifier thread. 2013-10-29 00:30:40 +00:00
Joe Mistachkin e175267bec Some cleanup of the previous assumptions. 2013-10-29 00:19:22 +00:00
Joe Mistachkin 65878c47af Add experimental new Tcl API Tcl_UnsetThreadData. 2013-10-28 23:39:40 +00:00
Joe Mistachkin 543cd3200b Another attempt to cleanup stale remnants of the notifier subsystem. 2013-10-28 22:40:14 +00:00
Joe Mistachkin d75c345663 Try resetting all the 'one time' locks as well. 2013-10-28 21:45:52 +00:00
Joe Mistachkin 1172c3966d Attempt to make sure the notifier gets fully re-initialized. 2013-10-28 21:01:47 +00:00
andreask d0abfbe72a Tweak to the fix. Tcl_InitNotifier() hangs. Removed. Fixes exec. Unclear about Rivet with original case. 2013-10-28 20:21:13 +00:00
Joe Mistachkin 18aadfce45 Prototype of fix for ticket [414d10346b]. 2013-10-28 19:34:15 +00:00
jan.nijtmans c4047c81e6 Bump tcltest version to 2.3.6 (should have been done just before the 8.5.15 release, just as in Tcl 8.6.1).
Don't fix eol-style for Makefile.in in "make dist", if the file system is case-insensitive/case-preserving.
2013-10-28 10:55:37 +00:00
jan.nijtmans 216ade8493 Fix [3eb2ec1449]: Allow upper case scheme names in url. http -> 2.7.13 2013-10-25 12:57:19 +00:00
dkf 383f020ee8 [3556215]: Made [scan] match [format] better in what it accepts as a format
string, by allowing uppercase %X, %E and %G.
2013-10-22 18:55:02 +00:00
jan.nijtmans edbfaa468e Fix execute permission on many files which shouldn't have it. 2013-10-17 09:28:11 +00:00
jan.nijtmans 9d1312440e Update to Unicode 6.3 tables 2013-10-09 21:57:26 +00:00
jan.nijtmans 3ad87b0a02 Fix for [d4e464ae48]: tcl 8.5.15/8.6.1 breaks python make check on darwin 2013-10-07 14:23:00 +00:00
jan.nijtmans c83af8f8d4 First attempt to fix bug [d4e464ae48]: tcl 8.5.15/8.61 breaks python make check on darwin 2013-10-06 19:27:50 +00:00
Kevin B Kenny 7413854f34 Advance to tzdata2013g 2013-10-05 16:22:16 +00:00
jan.nijtmans 73b02508fa When compiling with MSVC++, no longer link the stub library with msvcrt??.dll.
This way, workarounds in extensions like [http://core.tcl.tk/itcl/info/a961f0729c] are no longer necessary.
2013-10-03 15:17:43 +00:00
jan.nijtmans 5e1eaa44bc Fix compilation with latest MinGW-w64 version 3.0: Conflict on EXCEPTION_REGISTRATION typedef, which means something completely different in MinGW-w64. 2013-10-02 07:58:50 +00:00
jan.nijtmans c5f68dde5c Disable command line globbing on MinGW compiles: this saves startup time, since the result of the glob is not used anywhere. 2013-09-30 14:03:56 +00:00
jan.nijtmans 878c0cff52 Cherrypick [87d1313df3] from trunk:
Workaround for [http://sourceforge.net/p/mingw/bugs/2065/|MinGW bug #2065]. 
Both MinGW and MinGW-w64 (32-bit) are affected. 
Even though Win64 is not affected, adding -static-libgcc doesn't harm there, and we don't want to distrubute additional dll's with MinGW-compiled Tcl anyway.
2013-09-27 09:35:05 +00:00
dkf ce9b84204c [d614d63989] Ensure that there are no trailing colons as that causes chaos when a deleteProc is specified. 2013-09-25 22:54:29 +00:00
dgp e929b91222 Test demonstrating need for "adjust" manipulation in TclSubstTokens. 2013-09-25 16:39:26 +00:00
jan.nijtmans 96fec1a88c workaround for mingw bug [http://comments.gmane.org/gmane.comp.gnu.mingw.user/41724] 2013-09-23 11:12:12 +00:00
dgp c91c7b7cf1 Line numbers wrong in compiled [global] and [variable]. 2013-09-19 16:33:36 +00:00
dgp bfcb6b40d2 renumber tests for branch merge 2013-09-19 16:06:53 +00:00
dgp 2440231062 Line numbers wrong in compiled [namespace upvar]. 2013-09-19 16:04:48 +00:00
dgp aed9fbb19c Line numbers wrong in compiled [upvar]. 2013-09-19 15:44:21 +00:00
dgp e4dfb0d689 Line numbers wrong in compiled [dict update]. 2013-09-19 15:04:47 +00:00
dgp 7887926261 Line numbers wrong in compiled [dict for]. 2013-09-19 14:55:05 +00:00
dgp cb5d76ed2b Line numbers wrong in compiled [dict get]. 2013-09-19 14:48:02 +00:00
dgp 657b49a9d1 Stop segfault due to OBOE in CompileWord() calls in [dict incr] compiler. 2013-09-19 14:06:46 +00:00
dgp 1b0845930c Line numbers wrong in compiled [dict set]. 2013-09-19 13:06:06 +00:00
jan.nijtmans ad07565ec0 consistant use of capitals. 2013-09-19 12:37:13 +00:00
dgp a414da9341 Line numbers wrong in compiled foreach body. 2013-09-19 12:20:13 +00:00
dgp 134ada8ff9 Stop segfault due to OBOE in CompileWord() calls in [dict lappend] compiler. 2013-09-19 04:20:53 +00:00
dgp 7bc81bcbb0 [3487626] Backport fix for knownBug test dict-23.2. 2013-09-19 04:03:57 +00:00
dgp 6d44125712 merge release 2013-09-18 19:13:31 +00:00
dgp 08390e5c47 Added note to ChangeLog pointing to the fossil timeline for better logging. 2013-09-13 16:02:11 +00:00
dgp a52254cce9 merge 8.5; update changes 2013-09-13 14:14:24 +00:00
dgp bcb4faa32f [bdd91c7e43] Stop crash due to error in execution stack memory management.
Thanks to azazel for the fix.
2013-09-13 14:09:09 +00:00
jan.nijtmans fa65ef51ba Suggested fix for [bdd91c7e43]: tclsh crashes in [interp delete] 2013-09-13 10:53:32 +00:00
dgp a8bbc9486a merge 8.5. update changes. 2013-09-08 03:26:12 +00:00
dgp bb55ca2e95 [86ceb4e2b6] Improve reaction when multiple *tm files purport to offer the
same version of the same package.  Prefer the file that comes first on
the tm path.  Makes TCL*_TM_PATH variables more useful.  Thanks to
Gustaf Neumann for the suggestion.
2013-09-07 21:36:37 +00:00
dgp 0288a572d8 merge trunk 2013-09-07 21:19:47 +00:00
dgp 1ecf461e41 Partial revert of [a16752c252] bug fix to stop crashes in buggy tclcompiler. 2013-09-07 18:49:55 +00:00
dgp 97f9595151 Partial revert of [a16752c252] bug fix to stop crashes in buggy tclcompiler. 2013-09-05 17:21:41 +00:00
dgp 30710a181c Use ne instead of [string length] for less shimmer risk. 2013-09-05 15:47:29 +00:00
dgp 493b04cbc0 Error in order of #include lines broke some windows builds. 2013-09-05 12:45:11 +00:00
dgp 8938dbcc25 Merge commits to the correct branch -- trunk 2013-09-05 12:35:24 +00:00
dgp db738e7756 [010f4162ef] Repair effect of trace errors on -errorinfo and -errorstack. 2013-09-05 12:31:46 +00:00
dgp c6bb98e763 Cleaned up test command trying to make valgrind happy. 2013-09-04 12:45:51 +00:00
dkf c938932757 [98c8b3ec12] Make test fail in less catastrophic manner. 2013-09-04 09:36:22 +00:00
jan.nijtmans 9878106deb Fix 3 trivial (possible) errors, discovered by covertity.com 2013-09-04 07:22:45 +00:00
dgp 53dc4dcdee Favor timeline over ChangeLog 2013-09-03 16:45:56 +00:00
dgp a313e78ffa some missed changes 2013-09-03 16:04:06 +00:00
dgp 2c3dbea378 Add test and improve errorInfo. 2013-09-02 18:47:07 +00:00
dgp 8520e69f32 [010f4162ef] First step of fix on stammering errorstack. errorstack fixed.
errorinfo revision still under consideration.
2013-09-02 17:59:42 +00:00
jan.nijtmans 54223a5f7e typo 2013-09-02 14:01:00 +00:00
dkf 22515fc47f [b98fa55285]: Fix handling of whitespace at end of hex strings to decode. 2013-09-01 20:08:50 +00:00
dgp 6b45d21b4b Bump to tcltest 2.3.6 to account for changes since Tcl 8.6.0 release. 2013-08-30 21:57:26 +00:00
dgp 3adc645802 fix date 2013-08-30 14:31:06 +00:00
dgp 743ced9da3 changes 2013-08-30 14:16:05 +00:00
dgp b9ef276505 Bump to 8.5.15 for release. 2013-08-29 20:08:04 +00:00
dgp ebd7e8a86b [2486550] NR-enable same-interp invokehidden. Also, reroute all objProc
invocation through the common routines of EvalObjvCore and Dispatch.
2013-08-29 19:19:32 +00:00
dgp 4096bf5d01 New internal eval flag value so that all TclNREvalObjv() callers that
pre-resolve command names can choose whether or not TclNREvalObjv() should
attempt to re-do the resolution from objv[0] when something goes wrong.
2013-08-29 17:59:36 +00:00
dgp 6dcfcb8be9 Rework the re-resolution after enter traces machinery with cleaner
separations and neater interfaces.
2013-08-28 18:05:07 +00:00
dgp 24cec35f7b Clarfy and prettify influence of flag settings and command lookups. 2013-08-28 02:44:50 +00:00
dgp 367ade79ed Tidy up indenting for clarity in refactoring. 2013-08-27 20:25:15 +00:00
dgp e6af5d333b Exceptions raised from enter traces take priority over re-resolution games. 2013-08-27 20:06:08 +00:00
dgp 24be1383da Inline TEOV_RunEnterTraces() so its interface can be redesigned. 2013-08-27 20:03:57 +00:00
dgp 28384139ba Add test for Bug 2486550. 2013-08-27 18:11:53 +00:00
dgp e5b2f21fe9 merge trunk 2013-08-26 18:32:55 +00:00
dkf ccbbb5d288 Unbreak doc; the apropos index entry *must* be one line.
(This is an external constraint forced by the requirement to fit into the standard Unix manual system.)
2013-08-24 09:42:43 +00:00
dgp 2d27ea7088 merge trunk 2013-08-23 16:33:34 +00:00
dgp a33a94ec85 Make sure all Tcl_NR*Eval*() routines do a schedule only. No errors raised. 2013-08-23 16:23:47 +00:00
mig f36f801d24 fix NRE docs 2013-08-23 13:08:15 +00:00
dgp 841e525556 merge trunk 2013-08-23 12:04:12 +00:00
dgp 55b0c17067 Remove complications that no longer server any required purpose. 2013-08-23 05:59:48 +00:00
dgp 993b39c491 merge trunk 2013-08-22 20:41:02 +00:00
dgp 272b2008ad compiler warning 2013-08-22 20:34:30 +00:00
dgp f7cf1b2bae Make Dispatch() the single point for calling a Tcl_ObjCmdProc, and attach
the DTRACE machinery there (one place, not two).
2013-08-22 20:21:15 +00:00
dgp 8173bccfd9 Remove assertion that is not true in some circumstances (--enable-dtrace). 2013-08-22 16:13:29 +00:00
dgp a5b75dfa9a More coroutine tests. 2013-08-22 13:01:31 +00:00
dkf 52b97dd00b Correction to documentation 2013-08-22 08:07:33 +00:00
dgp 987eb68977 merge trunk 2013-08-22 01:13:13 +00:00
dgp f632850eb8 [8ff0cb9fe1] Make Tcl_NREvalObj() (and friends) behave as documented, by
only scheduling evaluation and not doing any of it until the caller routine
returns.  This fixes some serious errors in [coroutine] too.
2013-08-21 19:30:01 +00:00
dgp ed72e77b7d Tidy the code and add a test. 2013-08-21 19:18:28 +00:00
dgp 83d427e824 Don't allocate memory until you know you're going to use it and arrange for
it to be freed.  Leak!
2013-08-21 19:00:17 +00:00
dgp f18c1126d5 Don't use automatic storage to hold the invocation words of oo::define.
That practice doesn't agree with NRE execution.
2013-08-21 18:27:23 +00:00
dgp 62e1b3723e merge trunk 2013-08-21 13:34:19 +00:00
dkf 4d6aaa2e8b [3612422]: Refer to correct part of tclvars(n) rather than page itself. 2013-08-21 10:25:18 +00:00
dgp 4bf79aef9b Push out a trial patch for more eyes to see. 2013-08-20 14:00:05 +00:00
dgp 066a4b7b35 Revise execution trace handling to take account of the new reality in
Tcl 8.6 that callers can pre-resolve a cmdPtr for us.  In that case
a re-resolution in the form of another command name lookup isn't the right
thing.
2013-08-19 16:34:10 +00:00
dgp a6f2dee7fb Testing doing away with the NRRunObjProc routine, which looks like a
useless extra bounce on the NRE trampoline.

Normal testing has no problem with it, but debug-enabled testing
triggers an assert failure.

Either it would be good to have a normal test that fails in the conditions
of the assert failure, or it would be good to discover the assert is
asserting something not actually required, and then make the purge.
2013-08-19 15:22:15 +00:00
dgp a7e397556b merge trunk 2013-08-15 20:00:34 +00:00
dgp c084f0ea75 Make sure the errors raised by execution traces become errors raised by the
traced command, as documented. Deletion of the traced command was supressing
that.
2013-08-15 19:59:32 +00:00
dgp 5cdaf0e05b Make sure the errors raised by execution traces become errors raised by
the traced command, as documented.  Deletion of the traced command was
supressing that.
2013-08-15 19:55:26 +00:00
dgp 200e0742b8 merge trunk 2013-08-15 17:43:39 +00:00
dgp fe60431f53 The fix for [3610404] leads to a simplification in the implementation of
forward methods.
2013-08-15 14:05:02 +00:00
dgp 160ba1cb95 merge trunk 2013-08-14 20:31:16 +00:00
dgp 058f0df44d Add several tests to check consistency of stack traces. 2013-08-14 20:20:11 +00:00
dgp ff926f2b01 merge trunk 2013-08-14 19:07:01 +00:00
dgp bee5c35f44 [3610404] Re-resolution of command after enter traces invalidate epoch.
Make sure context is such that correct resolution happens.
2013-08-14 19:01:38 +00:00
dgp 8971b5cdea merge trunk 2013-08-14 18:44:51 +00:00
dgp b2e3f2fa04 merge trunk 2013-08-14 18:00:45 +00:00
dgp 0c1e275cdf [a16752c252] Correct failure to call cmd deletion callbacks. 2013-08-14 17:07:00 +00:00
dgp a2400fbe30 [a16752c252] Correct failure to call cmd deletion callbacks. 2013-08-14 17:02:41 +00:00
dgp 211f7d6466 Arrange for both execution traces and [info frame] to get their pre-subst
source strings from a common routine.
2013-08-14 12:43:22 +00:00
dgp 6dee5b3e07 Consolidate some helper routines. 2013-08-14 12:15:59 +00:00
dgp 9d1f38c3e3 Only schedule leave traces if enter traces complete successfully.
This avoids a memleak, and opens a data slot, so we can pass objc, objv
without the need to copy them into a list value.
2013-08-14 04:13:21 +00:00
dgp 33647e79c8 Use a new flag value TCL_EVAL_SOURCE_IN_FRAME passed in by callers to
determine whether the pre-subst source information in a CmdFrame is to
be used.  This takes the place of numLevels cross checking, so that field
is removed.  Routines are consolidated as well.
2013-08-12 20:00:14 +00:00
dgp f440a6ef41 merge trunk 2013-08-12 15:52:28 +00:00
jan.nijtmans c086de021c Never guess non-existing timezone name "America/Brasilia" on Windows. Reported by Arnulf Wiedemann 2013-08-11 14:42:24 +00:00
jan.nijtmans 97eb71a629 Never guess non-existing timezone name "America/Brasilia" on Windows. Reported by Arnulf Wiedemann 2013-08-11 14:41:10 +00:00
dgp e62b40c808 Arrange for both execution traces and [info frame] to get their pre-subst
source strings from a common routine, with care taken to reduce copying
by that routine.
2013-08-10 05:16:38 +00:00
dgp 234fb04984 Revised GetCommandSource() can (and thus should) return a normal zero
refcount value.
2013-08-09 16:48:30 +00:00
dgp 1b7d424507 Revise GetCommandSource() to return a normal Tcl_Obj value. 2013-08-07 20:27:30 +00:00
dgp 5797625e42 Give (objc, objv) their own ride from enter to leave traces. 2013-08-07 19:45:13 +00:00
dgp 987422a01f Many simplifications to the TIP 280 machinery.
* Removed support for non-NULL invoker when TCL_EVAL_DIRECT requested.
   * Eliminated TCL_EVAL_CTX eval flag.
   * Removed Tcl_Preserve-ability of ContLineLoc pointers.
   * Removed clLoc field of CompileEnv struct.
2013-08-07 17:11:21 +00:00
dgp 5f6b71f3f2 Remove Tcl_Preserve support for ContLineLoc values. It's not needed.
This allows the clLoc field of CompileEnv struct to go away too.
2013-08-07 16:44:03 +00:00
dgp f6f0891fff Test for TclContinuationsGet() usage, and simplifications. 2013-08-07 16:01:53 +00:00
dgp 27c5ada57e Replace potentially memleak creating safety check of a "cannot happen"
condition with an assertion.
2013-08-07 14:41:46 +00:00
dgp 5f2f5b63c3 Add comment stating new limitation on Tcl(NR)EvalObjEx() interface. 2013-08-07 12:44:42 +00:00
dgp 59f7320bdd All use of the evalFlag value TCL_EVAL_CTX is unused by the code and
unreachable by extensions.  This checkin removes all the code supporting
that flag value.

The consequence is that all the calls to TclNREvalObjEx() and its callers
that are currently choosing not to pass the TCL_EVAL_DIRECT flag in when
they pass in a non-NULL invoker will no longer be free to change their
mind.  That might be reason not to adopt this change.
2013-08-06 17:24:40 +00:00
dgp 00546e5e21 The value TCL_LOCATION_EVAL_LIST in the type field of a CmdFrame appears to
exist only for the sake of taking great pains to make sure that pure list
values remain pure list values.

The value of pure list values is no longer what it once was. For a long long
time now, any canonical list values have been equally good.
2013-08-06 16:41:41 +00:00
dgp a63563bd9a Add assertions that will guide and protect more discovery of dead code for elimination. 2013-08-06 16:20:59 +00:00
dgp 1d99884b08 Drop TCL_LOCATION_EVAL_LIST now that it is unused. 2013-08-06 13:30:36 +00:00
dgp 8bd533d76e Eliminate the union that is no longer needed. 2013-08-06 13:20:36 +00:00
dgp 23d61a10c2 Revert the changes that went too far and broke things. 2013-08-06 13:08:54 +00:00
dgp 0ee8df700b The value TCL_LOCATION_EVAL_LIST in the type field of a CmdFrame appears to
exist only for the sake of taking great pains to make sure that pure list
values remain pure list values.

The value of pure list values is no longer what it once was.  For a long long
time now, any canonical list values have been equally good.  This branch
is Work In Progress eliminating the complication of the additional type value.

Currently some minor botches are breaking execution tracing tests.
2013-08-06 04:15:16 +00:00
jan.nijtmans 50a950f2b1 Mark unixforkevent-1.1 nonPortable, until proven on more platforms.
Make sure that when testing for pthread_atfork the thread library is taken into account.
2013-08-05 22:00:58 +00:00
jan.nijtmans c74640849e Mark unixforkevent-1.1 nonPortable, until proven on more platforms. 2013-08-05 21:58:21 +00:00
dkf 861b34625c [3611643fff]: Support TclOO in autoload mechanism. 2013-08-03 15:27:40 +00:00
dkf 0958b92b37 Deal with the elaborate rip-apart-a-metaclass case as well. 2013-08-02 20:19:44 +00:00
dkf 6d9ae4aa16 [9d61624b3d]: Stop crashes when emptying the superclass slot. 2013-08-02 14:58:58 +00:00
dgp 965128fe34 [1905562] [8d2c0da36d] Raise the recursion limits on regexps to allow
existing regexps "in the wild" to continue working with Tcl 8.6.
Latest example comes from DejaGnu.
2013-08-01 19:18:02 +00:00
jan.nijtmans ebc5b27c8c Tcl_InitNotifier: Bug [a0bc856dcd]. Start notifier thread again if we were forked, to solve Rivet bug 55153 2013-08-01 12:54:16 +00:00
jan.nijtmans 3916ce9d4c Tcl_InitNotifier: Bug [a0bc856dcd].
Start notifier thread again if we were forked, to solve Rivet bug 55153
2013-08-01 12:38:04 +00:00
jan.nijtmans 4bd227bc12 Make sure that "string is space \u202f" will continue to return "1", even if in future Unicode this character (NARROW_NO_BREAK_SPACE) will cease to be a space. See: [http://www.unicode.org/review/pri249/].
Don't hardcode "tclWinError.o" for Cygwin
2013-07-29 10:12:12 +00:00
jan.nijtmans 84e92af6dc Make sure that "string is space \u202f" will continue to return "1", even if in future Unicode this character (NARROW_NO_BREAK_SPACE) will cease to be a space. See: [http://www.unicode.org/review/pri249/] 2013-07-29 09:29:16 +00:00
dgp 15ca940ca7 Simplify AuxData access with a macro. 2013-07-27 20:29:42 +00:00
dgp 525bc7c9b5 [6585b21ca8] [regexp {(\w).*?\1} abb] failed to match. Thanks to Tom Lane for passing on the discovery in Postgres. 2013-07-26 13:24:19 +00:00
dgp 6adf3b8c6c [6585b21ca8] [regexp {(\w).*?\1} abb] failed to match.
Thanks to Tom Lane for passing on the discovery in Postgres.
2013-07-26 13:21:30 +00:00
jan.nijtmans 3d14dd6bc9 Move test for pthread_atfork inside SC_ENABLE_THREADS 2013-07-26 09:20:28 +00:00
oehhar 41afeeec2b Fixed test case variable clash with 'folder' 2013-07-25 17:20:02 +00:00
jan.nijtmans 623c1cbe5b rebase 2013-07-25 14:25:47 +00:00
jan.nijtmans 60ef39d24a Move test for pthread_atfork inside SC_ENABLE_THREADS 2013-07-25 14:24:39 +00:00
jan.nijtmans 889454ec06 Make sure that the notifierMutex and notifierCV in a forked child cannot block anything, even though the initialization of the Notifier Thread in the parent is not finished yet. 2013-07-25 08:29:56 +00:00
jan.nijtmans 752ab085d6 rebase 2013-07-25 07:02:59 +00:00
jan.nijtmans c019848148 Put Cygwin's tclWinError.o in PLAT_OBJS, not in DL_OBJS 2013-07-25 06:59:08 +00:00
dgp fd1c7c2fb3 Demonstrate and fix memory leak in Tcl_ParseVar(). 2013-07-24 16:56:59 +00:00
dgp 8f2d19b951 Demonstrate and fix memory leak in Tcl_ParseVar(). 2013-07-24 16:51:04 +00:00
dgp f2bea640bb Mark commands with potential to compile expansion arguments (as [list] does). 2013-07-24 13:58:35 +00:00
dgp d818803502 more disabled code removal 2013-07-24 12:13:01 +00:00
dgp e0437fdf58 Remove outdated, disabled code. 2013-07-23 20:11:00 +00:00
dgp 8163234efd Remove outdated comment. Stack depths are well checked now. 2013-07-23 18:03:39 +00:00
dgp f796ad762c Stop checking stack depth in [catch] compiler.
Stack depth is checked in compiles of *all* Tcl commands/scripts/bodies
in debug builds already.
2013-07-23 18:01:36 +00:00
jan.nijtmans 0185dd6477 rebase 2013-07-23 09:54:05 +00:00
jan.nijtmans 07d10b8a58 Add "testfork" test command. Not used in any test-case yet 2013-07-23 09:27:59 +00:00
jan.nijtmans bc28cd1ac8 Add "testfork" test command. Not used in any test-case yet 2013-07-23 09:07:21 +00:00
jan.nijtmans 9350513d16 Tcl_InitNotifier() call in TestforkObjCmd() is only necessary when pthread_atfork() is not available. 2013-07-22 11:11:10 +00:00
jan.nijtmans 4fb5d04b2f Use pthread_atfork() when available. 2013-07-22 10:57:44 +00:00
jan.nijtmans f287d8cb0f Test-case should pass on Darwin or with non-threaded build as well. 2013-07-22 10:11:05 +00:00
jan.nijtmans 0c2e553e8f Fix bug which hangs iocmd.tf-32.1 2013-07-22 10:10:00 +00:00
oehhar 915c6abe66 Test file tests/unixForkEvent.test added 2013-07-22 08:45:37 +00:00
jan.nijtmans 0070244914 Rebase to core-8-5-branch
Add "testfork" test command to be usable in testcase.
2013-07-21 14:52:57 +00:00
dgp 17ebc3cd20 Rewrite of the TclCompileScript() routine.
Primarily this breaks that large, rather convoluted routine into many
smaller more single-purpose routines for greater clarity.  This also
permits more sharing of function components.  Ensemble compiles now share
the same low level routines as top-level command compiles.  This refactoring
should also have the benefit of easing merging between branches by better
locating patches according to what function or data structure they tweak.

Also in this checkin:
    Minimized calls to Tcl_ResetResult() during compile.
    Several commands compile their detected syntax errors into
	bytecode that reports the syntax error.
    Significant reform to the TIP 280 machinery, including elimination
	of the litInfo hash table.  Its function of finding the index
	of a compiled command in a script from a pc value has been redone
	using the codeDelta information already stored in ByteCode.
2013-07-18 20:27:01 +00:00
dgp 5e9e003379 [assemble] compile syntax error into bytecode reporting syntax error message. 2013-07-18 18:25:24 +00:00
dgp 2aed1acbd1 merge trunk 2013-07-18 15:42:54 +00:00
dgp 81a1a91361 [Bug 1c17fbba5d] Fix -errorinfo from syntax errors so that the error is
not obscured.  Instead highlight it by making it the last character quoted.
2013-07-18 15:05:18 +00:00
oehhar 9a19e4cba0 Start notifier thread again if we were forked, to solve Rivet bug 55153 - RFE [a0bc856dcd] 2013-07-17 16:02:36 +00:00
dgp c2d6c48dd9 Factor out the call to a compileProc into one place used by both ensemble
subcommand compiles and toplevel command compiles in TclCompileScript.
2013-07-17 13:57:23 +00:00
dgp d383707870 Streamline the housekeeping on the operands of INST_START_CMD.
For example, do only incr on success, not incr on attempt + decr on error.
2013-07-16 20:48:37 +00:00
dgp c33f97005c Simplify the ensemble subcommand compile. There's no need to be
crafting synthetic Tcl_Parse and copying tokens.  Some pointer shifts will do.
2013-07-16 17:21:12 +00:00
dgp 3f126895fb Simplify arguments to TclContinuationsEnterDerived(). 2013-07-16 14:52:33 +00:00
dgp d848f30c45 Eliminate the litInfo table and all the code tending to its care and feeding.
The pc -> command index mapping function it provided can be achieved using
other data already in the ByteCode struct.
2013-07-16 14:07:41 +00:00
dgp d860a2c3a4 Build CompileBasicNArgCommand on top of TclCompileInvocation. 2013-07-15 20:16:11 +00:00
dgp 009f2adf3d merge trunk 2013-07-15 19:40:33 +00:00
dgp 5684ad8d94 Possible improvement in light of [86ceb4e2b6]. 2013-07-15 19:09:59 +00:00
dgp 774c402365 Prefer CompileWord() over CompileTokens() when possible. 2013-07-15 17:07:51 +00:00
dgp 740d1811bc Global replace: CompileBody() -> BODY(). 2013-07-12 18:44:15 +00:00
dgp 451ab6927c Tests demonstrating the need for the last two SetLineInformation() calls. 2013-07-12 16:25:51 +00:00
dgp f302557ad5 Revise the CompileWord() and PushVarNameWord() macros to make explicit the
SetLineInformation() that's in each of them.
2013-07-11 23:19:14 +00:00
dgp d061b31460 Have TclMakeEnsemble() set ENSEMBLE_COMPILE at creation, not as a separate
epoch-bumping step.
2013-07-11 17:06:35 +00:00
dgp 783aea7d3a merge trunk 2013-07-11 04:12:01 +00:00
dgp 34c17bad36 Add a test for each call to SetLineInformation() demonstrating the need
for it to be there.  Fixed bugs revealed by the new tests.

What's still missing are more tests demonstrating the need for other
SetLineInformation() calls that are not there yet. ;)
2013-07-11 04:07:39 +00:00
dgp f0992177e4 Revert the revised macros used in developing the new tests. 2013-07-11 04:00:57 +00:00
dgp 6f4f296706 Add tests for the SetLineInformation() calls in tclEnsemble.c, and fix
the bugs around those calls exposed by the tests.
2013-07-11 03:48:40 +00:00
dgp 75bc23d59c Add tests for SetLineInformation() calls in tclCompCmdsSZ.c as well as some
obvious refactoring improvements.
2013-07-10 20:33:45 +00:00
dgp 9d91a3db0b Add tests for SetLineInformation() calls in tclCompCmdsGR.c. 2013-07-10 19:43:56 +00:00
dgp 1dc19d8370 Add tests for, and fix bugs in, the SetLineInformation() calls in tclCompCmds.c. 2013-07-10 19:34:55 +00:00
dgp 458197828b merge trunk 2013-07-10 18:02:20 +00:00
dgp c079ab076f Fix for [86fb5ea28e]. Test will eventually merge in from tip280-test-coverage. 2013-07-10 17:58:45 +00:00
dgp d69c39d52e Next attempt. Appears to have uncovered a bug. 2013-07-10 16:43:01 +00:00
dgp 7a53c36e3a First additional test. Remove dup macros in tclEnsemble.c. 2013-07-10 16:27:09 +00:00
dgp ee74db1cbf Disabling the SetLineInformation() macro entirely causes only 3 tests
in the test suite to fail.  Restoring just 2 SetLineInformation() calls
fixes those failures.  The need for all the other SLI() calls is not
demonstrated by any test.  Without more complete test coverage, it is
difficult to confidently tweak the TIP 280 implementation without fear
that changes are introducing breakage.
2013-07-10 16:17:12 +00:00
dgp 1e62f5ac76 Remove the (now unused) wlineat arguments. 2013-07-10 03:28:37 +00:00
dgp afad6ffbb4 Revise the litInfo table so that it gets built later (in TclInitByteCodeObj)
from a simpler store of data that can unwind.
2013-07-10 03:17:57 +00:00
dgp d72d5f8b7a Tentative Work In Progress unwinding TIP 280 line information. 2013-07-09 20:37:37 +00:00
dgp c46c774126 Use the TokenAfter() macro. 2013-07-08 23:02:44 +00:00
dgp ba3bf9b61f Use TIP 280 macros. 2013-07-08 22:36:55 +00:00
dgp 82bddf4dca merge trunk 2013-07-08 19:54:50 +00:00
dgp e10479f3d7 Factor out compiling the Command literal. 2013-07-08 19:29:01 +00:00
jan.nijtmans 7183692271 Unbreak MSVC6 debug build (thanks Andreas Kupries!) 2013-07-08 18:56:13 +00:00
jan.nijtmans b7fbf3c433 Unbreak MSVC6 debug build (thanks Andreas Kupries!) 2013-07-08 18:55:23 +00:00
dgp c10c796a46 Plug memory leak; Break three compilation mechanisms into routines. 2013-07-08 18:08:01 +00:00
dgp 582824087d Move TIP 280 and command extent housekeeping to the periphery. 2013-07-08 15:39:55 +00:00
dgp da4296c06f Defer expansion request detection as much as possible. 2013-07-08 15:24:56 +00:00
dgp 0dec640514 Consolidate the StartExpanding() calls. 2013-07-08 15:00:02 +00:00
dgp d2b490f552 The routines StartExpanding() and EnterCmdWordData() are orthogonal, so it's
ok to reverse the order in which they are called.
2013-07-08 14:31:14 +00:00
dgp 4cfafc3002 merge trunk 2013-07-08 12:55:06 +00:00
jan.nijtmans fb3fc7d5d3 Build stub objects with -DSTATIC_BUILD on all platforms. Only important on win32 (already done) and cygwin, on other platforms it should not have any effect. 2013-07-08 06:51:16 +00:00
jan.nijtmans de31df63e7 Build stub objects with -DSTATIC_BUILD on all platforms. Only important on win32 (already done) and cygwin, on other platforms it should not have any effect. 2013-07-08 06:49:44 +00:00
jan.nijtmans a7bebaafdb merge-mark 2013-07-07 09:15:37 +00:00
stwo bd6afa9af5 OpenBSD/m88k is now elf. Remove unneeded elf check. 2013-07-07 02:19:20 +00:00
stwo c8629fcad6 OpenBSD/m88k is now elf. Remove unneeded elf check. 2013-07-07 02:11:57 +00:00
Kevin B Kenny b52ba9ae90 Merge mark 2013-07-06 22:29:36 +00:00
Kevin B Kenny a6fe3119b2 http://www.iana.org/time-zones/repository/releases/tzdata2013d.tar.gz 2013-07-06 22:24:52 +00:00
Kevin B Kenny 28bc2e5adf http://www.iana.org/time-zones/repository/releases/tzdata2013d.tar.gz 2013-07-06 22:22:01 +00:00
dgp 191c6d2137 merge trunk 2013-07-05 19:56:12 +00:00
dgp 7eab500306 merge trunk 2013-07-05 19:54:56 +00:00
jan.nijtmans 421cc90918 Use X11/Xlib.h for checking where X11 can be found in stead of X11/XIntrinsic.h. Suggested by Pietro Cerutti.
(backported from tclconfig)
2013-07-05 14:56:24 +00:00
jan.nijtmans e26d6e29c1 Use X11/Xlib.h for checking where X11 can be found in stead of X11/XIntrinsic.h. Suggested by Pietro Cerutti.
(Backported from tclconfig)
2013-07-05 14:52:07 +00:00
jan.nijtmans 57f4decd9b CONST -> const in one place 2013-07-05 14:04:03 +00:00
jan.nijtmans e0373f12ec Allow successfull compilation, even if Tcl_GetErrorLine/Tcl_SetErrorLine are redefined as macros. 2013-07-05 14:02:59 +00:00
jan.nijtmans fa8b071f04 Bug [817249]: bring tclXtNotify.c up to date with Tcl_SetNotifier() change 2013-07-03 10:43:49 +00:00
jan.nijtmans 6f68b762d3 Bug [817249]: bring tclXtNotify.c up to date with Tcl_SetNotifier() change 2013-07-03 10:39:50 +00:00
jan.nijtmans ade4e6d9bb Fix compiler warning when compiling Itcl 4.0:
In file included from ./generic/itcl2TclOO.c:12:0:
/Tcl/include/tclInt.h:3012:8: warning: ‘struct addrinfo’ declared inside parameter list [enabled by default]
        const char **errorMsgPtr);
        ^
2013-07-03 08:59:09 +00:00
jan.nijtmans a6b67f2ef2 Fix compiler warning when compiling Cygwin port with -Wwrite-strings 2013-07-03 08:56:34 +00:00
dgp 88731d9d93 comment improvements 2013-07-02 10:36:32 +00:00
jan.nijtmans 73faa3bbb6 Bug [32afa6e256]: dirent64 check is incorrect in tcl.m4. Thanks to Brian Griffin. 2013-07-02 07:17:19 +00:00
jan.nijtmans 89b2fc0982 Don't forget ChangeLog for previous commit 2013-07-02 07:16:22 +00:00
jan.nijtmans 7d8dff7c72 Bug [32afa6e256]: dirent64 check is incorrect in tcl.m4. Thanks to Brian Griffin. 2013-07-02 07:14:59 +00:00
dgp aec5846c12 More Work In Progress. 2013-07-01 20:58:15 +00:00
dgp 05fb0c0810 More elimination of error message litter to fix [Bug 20a81392ec]. 2013-06-28 02:58:15 +00:00
dgp a47b03577b Stop the compileProc routines leaving behind error messages in interp.
(Nicer way to solve [Bug 20a81392ec].)  Make simplifications in 
TclCompileScript() make possible by the new structure.  Still a work
in progress.
2013-06-27 20:10:41 +00:00
dgp fda71d6d4c merge trunk 2013-06-27 13:12:09 +00:00
dgp 7070acfea1 plug memory leaks 2013-06-27 13:11:53 +00:00
jan.nijtmans eec0dcb530 Fix [34538ba43f] 2013-06-27 12:35:47 +00:00
jan.nijtmans c0f408b9cd Fix [34538ba43f] 2013-06-27 12:34:49 +00:00
dgp ddd130e532 merge trunk 2013-06-27 12:05:00 +00:00
jan.nijtmans e592a6c9d5 Bug [9b2e636361]: Tcl_CreateInterp() needs initialized encodings. 2013-06-27 08:51:40 +00:00
jan.nijtmans 5ea3e8b570 Bug [9b2e636361]: Tcl_CreateInterp() needs initialized encodings. 2013-06-27 08:28:42 +00:00
dgp 324ca57f3d merge trunk 2013-06-26 20:20:23 +00:00
dgp a9f49cd781 Stop buffer overrun into undefined values detected by valgrind. 2013-06-26 20:13:57 +00:00
dgp b3fea91162 Correct typo detected by valgrind. 2013-06-26 17:26:16 +00:00
dgp ae7b32a706 Fix bytecode ranges in the cmdMapPtr. still leaky. 2013-06-26 16:06:44 +00:00
jan.nijtmans eaf387ef13 typos.
On Cygwin, Tcl_SetPanicProc(NULL) should set back the panic proc to its default, which is not NULL.
2013-06-26 14:24:20 +00:00
jan.nijtmans 78b0a4a13c formatting, typo 2013-06-26 14:20:26 +00:00
jan.nijtmans f7fd65de47 Allocate encoding name, so caller of Tcl_RegisterConfig() doesn't need to keep it forever.
Fix some comments.
2013-06-26 08:10:36 +00:00
jan.nijtmans d751f58f9d Proposed solution for [9b2e636361] 2013-06-26 07:42:53 +00:00
dgp 5eecd400b7 A few bug fixes from failing tests; still leaky. 2013-06-26 03:46:54 +00:00
dgp 3f19b90244 merge trunk 2013-06-25 20:22:59 +00:00
dgp 11f1a88c12 Nearly functional now, but leaky and not yet as tidy as I'm hoping for. 2013-06-25 20:22:31 +00:00
dgp c012287fc8 Replace always true test with assertion. 2013-06-25 19:23:24 +00:00
dgp 9fd3e86565 merge trunk 2013-06-25 15:01:31 +00:00
dgp adb4b18477 Make more use of the CompileTokens() macro. 2013-06-25 15:01:03 +00:00
dgp dc4782f595 Branch for rewriting TclCompileScript() and related routines, with the
intent to generally simplify and make more readable, as well as find and
eliminate duplication with ensemble machinery and improve mergeability
to other branches.  Work in Progress.  Doesn't work at all right now.
2013-06-25 14:19:39 +00:00
jan.nijtmans 708da35f79 Don't use deprecated Tcl_DStringTrunc any more 2013-06-25 12:06:07 +00:00
jan.nijtmans 07bfe18a21 Don't use deprecated Tcl_DStringTrunc any more. 2013-06-25 12:02:56 +00:00
jan.nijtmans 9497794406 Remove TclInitStubTable() function (but keep it in the "initsubsystems" branch). 2013-06-25 10:02:14 +00:00
jan.nijtmans 8d8c38c7c7 Don't use TclpInetNtoa any more, use inet_ntoa in stead. Since IP6 support it's even not necessary any more (except for fake-rfc2553, but mutexes are used here already) , but it's in the internal stub table so we cannot remove it until 9.0 2013-06-21 11:57:59 +00:00
jan.nijtmans dcb4da22fa Modify internal TclStubInfoType type: use TclStubs * in stead of ClientData, so less type casts are needed in the code.
Disadvantage: somewhat more code duplication, but it makes the code much more understandable.
2013-06-21 11:53:11 +00:00
dgp 130c6dd203 TclCompileScript() should not overwrite envPtr->numSrcBytes.
The envPtr already has the right value stored in it.
2013-06-20 14:20:59 +00:00
dgp bbca4ec51b TclCompileScript() should not overwrite envPtr->numSrcBytes.
The envPtr already has the right value stored in it.
2013-06-20 14:17:05 +00:00
dkf 4a6f1d02be Fixed bug with optimizing with INST_START_CMD about. 2013-06-19 22:44:42 +00:00
dgp 202a7c4db1 More use of simplifying macros.
Replace dynamic allocation with automatic storage on the call stack.
2013-06-19 19:33:21 +00:00
jan.nijtmans 4d9fc81c0f Eliminate a lot of dead code (for Windows 95/98/ME only).
Eliminate all usage of TclWinSetInterfaces(), which does exactly the same as TclpSetInterfaces(), but keep exported symbol and stub entry.
2013-06-19 12:53:53 +00:00
jan.nijtmans cdd8467ca9 Fix [3611974]: InitSubsystems multiple thread issue 2013-06-18 10:36:06 +00:00
jan.nijtmans 099345d98c Fix [3611974]: InitSubsystems multiple thread issue 2013-06-18 10:33:33 +00:00
jan.nijtmans 76df95e6e4 Fix uniClass tool which was the real cause for [a876646efe], and add test-case for it. 2013-06-18 07:50:19 +00:00
jan.nijtmans 7243b34d80 Fix uniClass tool which was the real cause for [a876646efe], and add test-case for it. 2013-06-18 07:43:59 +00:00
jan.nijtmans 6a445a3fe6 Better place to put vsnprintf switch, so it is usable by all *.c files.
Fix comment on _ANSI_ARGS_ which is no longer true since 8.6.
2013-06-18 07:00:04 +00:00
dgp d6ca452640 Updates to redirect bug reports to the new tracker location. 2013-06-17 17:05:07 +00:00
jan.nijtmans 7b9871647a Fix [42b8083613] 2013-06-17 17:03:49 +00:00
dgp 5f13065a33 Updates to redirect bug reports to the new tracker location. 2013-06-17 17:03:18 +00:00
jan.nijtmans e80db5fa35 Use more portable TclIsSpaceProc() in stead of isspace(). 2013-06-17 13:29:39 +00:00
jan.nijtmans 3215339ef0 Use more portable TclIsSpaceProc() in stead of isspace().
Make sure that "string is space \u180e" continues to return 1 for whatever unicode version.
2013-06-17 13:23:29 +00:00
jan.nijtmans b7289f092d Fix [a876646efe]: re_expr character class [:cntrl:] should contain \u0000 - \u001f 2013-06-17 04:54:35 +00:00
jan.nijtmans ded13430f9 Fix [a876646efe]: re_expr character class [:cntrl:] should contain \u0000 - \u001f 2013-06-17 04:52:01 +00:00
jan.nijtmans 6eb0e8555d On 32-bit platforms, 12 characters for version is enough, on 64-bit platforms it will be aligned to 16 characters anyway. 2013-06-17 04:41:57 +00:00
jan.nijtmans c05b753e95 link tclsh with stub library, just like xttest and tcltest, in order to allow additional static stub-enabled libraries to be linked with it. 2013-06-16 20:48:57 +00:00
jan.nijtmans f332c17690 split off TclInitStubTable() as separate function - which does the actual stub table initialization - previously part of Tcl_InitStubs(). 2013-06-16 20:32:50 +00:00
jan.nijtmans df6a99b1f7 Don't use deprecated stricmp/strnicmp any more, but underscored variant for non-GNU compilers.
Some formatting - improved comments.
2013-06-14 10:15:50 +00:00
jan.nijtmans 07096327dc Don't use deprecated stricmp/strnicmp any more, but underscored variant for non-GNU compilers. 2013-06-14 10:11:08 +00:00
jan.nijtmans a831b299f7 Fix env.test when running mingw-w64 (AMD64 build) test-suite on wine64.
Fix some gcc warnings which become visible with -Wextra
2013-06-13 07:23:08 +00:00
jan.nijtmans b6b9185fa8 Fix some gcc warnings which become visible with -Wextra 2013-06-13 07:13:09 +00:00
jan.nijtmans bd6f6a89c6 Fix env.test when running mingw-w64 (AMD64 build) test-suite on wine64 2013-06-12 19:36:49 +00:00
jan.nijtmans 169288808b Workaround for mingw-w64 (AMD64-only) bug: It appears that zdll.lib (as produced by Microsoft tools) doesn't import the zlib symbols correctly, so use "libz.dll.a" produced with mingw-w64 tools in stead. 2013-06-12 12:24:23 +00:00
jan.nijtmans 615ab1a0d4 Silence various warnings when doing a 64-bit build with MSVC: Those warnings can only _really_ be fixed in "novem" (so, don't silence them there).
Use vsnprintf (more portable) in stead of _vsnprintf, except on MSVC
2013-06-12 10:29:01 +00:00
jan.nijtmans c961880a26 Silence various warnings when doing a 64-bit build with MSVC: Those warnings can only _really_ be fixed in "novem" (so, don't silence them there) 2013-06-12 10:24:52 +00:00
dgp f118d91a3d Revise INST_EXPAND_STKTOP so that it no longer makes use of its operand.
All the information required to do a proper expansion of the exec stack
to support expanded command invocation is already present.  The operand
doesn't provide any essential information.  By ignoring it, we eliminate
the risk that the compiler might fill in the operand with a bad stack depth
estimate value.  INST_EXPAND_STKTOP doesn't need an operand, but in order
to support loading of existing bytecodes we cannot change it now.  There's
also no need to change what the compiler tries to place in the operand,
though changing it to always be zeros would be acceptable now.
2013-06-11 22:47:22 +00:00
dgp 3c473ee0c4 Select improvements in stack depth estimates brought over from mig-review.
Mostly these are just simplifications, removing code that wasn't needed.
Some changes make the stack depth estimate more accurate instruction by
instruction.
2013-06-11 20:38:00 +00:00
dgp 67264f1e10 Repairs to compile/exec debugging output. 2013-06-11 19:41:55 +00:00
dgp 9cccd5fd91 Stack housekeeping repair for last checkin. 2013-06-11 17:58:49 +00:00
dgp 470fc04dd0 [33b7abb8a2] [7174354ecb] Rewrite TclCompileThrowCmd(). 2013-06-11 16:44:34 +00:00
jan.nijtmans 46db2c3edd Improve compatibility detection for <time.h> and <sys/stat.h>:
- Move <time.h> before other includes on Windows, so we are sure the time_t definition being checked doesn't come from <sys/types.h>. 
- Padding at the end of Tcl_StatBuf doesn't influcence binary compatibility, so relax panic check accordingly.
2013-06-11 08:12:09 +00:00
jan.nijtmans 52ce2fdeb0 Improve compatibility detection for <time.h> and <sys/stat.h>:
- Move <time.h> before other includes on Windows, so we are sure the time_t definition being checked doesn't come from <sys/types.h>. 
- Padding at the end of Tcl_StatBuf doesn't influcence binary compatibility, so relax panic check accordingly.
2013-06-11 07:58:01 +00:00
dkf d8bed612b0 [779d38b996]: Make the 'try' compiler handle -during right and compile some
more cases than it did before.
2013-06-09 17:34:10 +00:00
dkf 41da12e756 Fix the problems with code generation; behavior now appears correct. 2013-06-09 17:21:07 +00:00
dkf 18fcba4c82 Improving tests, fixed one case. 2013-06-09 08:15:43 +00:00
dkf 41462bf4fa Working on a better compiler for [try]; found some bugs in previous compilation
code which aren't resolved yet.
2013-06-08 23:43:29 +00:00
dkf 4e13219dfb More informative comment describing INST_SYNTAX. 2013-06-08 23:35:02 +00:00
dkf 854eec9e0f Factor out stereotypical ways of getting variable indices. 2013-06-08 13:17:26 +00:00
dkf 849acd6e96 Simplify stack depth management. 2013-06-07 12:48:58 +00:00
dkf b5c0305e8b More efficient instruction sequence for [dict for] with correct exception depth handling. 2013-06-06 21:01:04 +00:00
dgp a8ee0b7831 3614382 Fix stack management of compiled [dict for] by shifting limits
of the catch range.
2013-06-06 16:55:08 +00:00
dgp a989f1616a 3614360 Repair stack demands of optimized compiled [return LITERAL]. 2013-06-06 14:24:35 +00:00
dkf af76b69dcd Working on the optimizer. 2013-06-06 09:09:48 +00:00
dkf ab224ed8ee Minor grammar fix. 2013-06-06 06:56:20 +00:00
dkf 68dfdc609e Split the optimizer up. Remove the dreaded 'goto' from which doesn't need it. 2013-06-06 06:53:55 +00:00
dkf 10ccda4936 Added optimizing of jump-to-nop and jump-to-jump cases. Ta to AK for suggesting. 2013-06-05 23:05:58 +00:00
dkf c718bb66ac Working on the optimizer, and finding a few bugs in bytecode generation. 2013-06-05 21:42:29 +00:00
dkf 5dad1c5205 Added the optimizer... 2013-06-05 21:05:41 +00:00
dkf 270a615a09 Corrected wrong information about instruction width that was causing an optimizer crash. 2013-06-05 20:55:29 +00:00
dkf 4a21f51055 merge fixes 2013-06-05 20:23:41 +00:00
dgp 532b8988c1 [Bugs 2835313, 3614226, 3614342]: Complete the construction of break/continue
compilers that get the stack cleanup right, even when there's expansion going
on.
2013-06-05 15:22:53 +00:00
dgp b2423f72cf Repair TCL_COMPILE_DEBUG guards 2013-06-05 15:07:40 +00:00
dgp 3903b017ec Stack Depth fixups. 2013-06-05 14:50:39 +00:00
dkf 3c76eb88e8 More cleaning up; factor out optimizer to new file. Some weird problems still. 2013-06-05 12:34:21 +00:00
dkf 544626ba84 [Bugs 2835313, 3614226]: Complete the construction of break/continue compilers
that get the stack cleanup right, even when there's expansion going on.
2013-06-05 08:11:06 +00:00
dkf b5f51d5007 merge trunk 2013-06-05 07:57:06 +00:00
dkf a20873ddab Even better tests 2013-06-05 07:51:06 +00:00
dkf 68d7745b27 Stack cleanup works now even in the most evil expansion cases. 2013-06-05 07:19:02 +00:00
jan.nijtmans c8b0ad64d1 Eliminate NO_VIZ macro as current zlib uses HAVE_HIDDEN in stead.
One more last-moment fix for FreeBSD by Pietro Cerutti
2013-06-04 08:33:16 +00:00
dgp a097532afd merge 8.5 2013-06-03 20:31:58 +00:00
dgp 7b43d03c2b merge 8.4 2013-06-03 20:31:31 +00:00
mig fdf63d1e28 fix for perf bug detected by Kieran (https://groups.google.com/forum/?fromgroups#!topic/comp.lang.tcl/vfpI3bc-DkQ) 2013-06-03 16:52:48 +00:00
mig 17f4b04d10 fix for perf bug detected by Kieran (https://groups.google.com/forum/?fromgroups#!topic/comp.lang.tcl/vfpI3bc-DkQ) 2013-06-03 16:10:30 +00:00
dkf 2a3000c25e Next stage of fixing the break/continue generation. 2013-06-03 14:57:48 +00:00
jan.nijtmans 546d781de9 last-moment fix for FreeBSD from Pietro Cerutti 2013-06-03 14:19:43 +00:00
dgp e7d31b9449 Improve reliability of test httpold-4.12. Thanks AF! 2013-06-03 14:01:24 +00:00
dkf d2b951b436 merge back from trunk 2013-06-03 12:55:05 +00:00
dkf 79f58ebfb3 Merge back the improved [break] and [continue] compilation. 2013-06-03 09:46:10 +00:00
dkf 2797b611e3 Generate [continue] optimally in [for] next clauses. Add tests for Bug 3614226. 2013-06-03 09:37:14 +00:00
dkf 7da4d96216 Fix a stack depth calculation. 2013-06-02 21:32:16 +00:00
dkf 15425ace0b Remove useless macro, use existing macro where it makes sense. 2013-06-02 18:54:09 +00:00
dkf 7390940817 Many improvements to code generation of efficient break and continue. 2013-06-02 17:41:14 +00:00
dkf 7484715183 Getting better at doing more efficient break/continue instruction handling. 2013-06-01 21:05:55 +00:00
dkf bcc14fb740 derp 2013-05-30 10:57:13 +00:00
dkf 90dba8327c Working towards the next batch of optimizations. 2013-05-30 10:55:39 +00:00
dkf db5a66dd2c Corrected code generation when doing the second run with an 'infinite' loop. 2013-05-30 10:29:41 +00:00
dgp 82c027f092 Simplifications and tidying up of stack management issues. Work in progress. 2013-05-29 20:36:05 +00:00
dgp e7da373e0c 3614102 - Reset stack housekeeping when compileProc fails. 2013-05-29 17:20:29 +00:00
andreask 2a26edf602 Fix C99 comment-ism breaking the native AIX compiler. HPUX likely as well. 2013-05-29 16:24:34 +00:00
dgp c929650e2f Stop emitting the instructions INST_*_SCALAR_STK*. They are identical to
their INST_*_STK* counterparts.
Having done that, it is clear the "simpleVarName" return from TclPushVarName
provides nothing of use to any of its callers.  Eliminate that.  Also make
TPVN return void, instead of int.
Bring the TPVN header comments up to date; they were quite rotten.
2013-05-29 14:37:58 +00:00
dgp b1a3a83b3d Use the routines that provide "basic compile" instead of reinventing them. 2013-05-28 19:21:22 +00:00
dgp fb728f1f53 Plug the memory leak. Greater ambitions to improve this routine are proving
more difficult than expected.
2013-05-28 14:29:01 +00:00
dgp b3b9cb8d35 Missed bits of dup code elimination. 2013-05-28 14:04:02 +00:00
jan.nijtmans 251b09c99a Move changelog entry to correct date. 2013-05-28 07:24:08 +00:00
jan.nijtmans 43cea24ef3 3036566 - Get msgcat locale for Win Vista+ first from gui language registry key.
Bumped msgcat to version 1.5.2.
Minor manpage corrections.
2013-05-28 07:18:42 +00:00
oehhar 2debf51b24 3036566 - Get msgcat locale for Win Vista+ first from gui language registry key.
Bumped msgcat to version 1.5.2.
Minor manpage corrections.
2013-05-27 20:45:08 +00:00
dgp f677af67e2 Repair some stack depth housekeeping. 2013-05-25 03:26:21 +00:00
dgp 622cb44fa4 3613854 - Fixup stack maintenance /code generation for [array set x $oddList].
Postscript - I see that this commit created a memory leak.
Will commit a fix within a few days.
2013-05-24 18:37:19 +00:00
dgp 50c73b80d3 Spare developers the burden and error risk of counting bytes in string
literals, or having to type them twice.
2013-05-23 20:24:56 +00:00
dgp b24c54bed3 Eliminate code duplication. 2013-05-23 18:32:19 +00:00
jan.nijtmans c74bb69040 merge-mark 2013-05-23 11:40:40 +00:00
jan.nijtmans 4b5869de07 merge-mark 2013-05-23 11:39:08 +00:00
jan.nijtmans d421fc1bdf When compiling Tcl with mingw32/wsl-4.0, make sure that no 64-bit time functions are used, which don't exist in Win95/98/ME. 2013-05-23 11:28:18 +00:00
andreask 6c3b503dbd Removed const qualifier causing the HP native cc to error out (error 1675: Duplicate type qualifier "const"). 2013-05-22 16:39:01 +00:00
dgp 68afad0c67 silence compiler warning 2013-05-22 13:34:46 +00:00
dgp 7965559c05 silence compiler warning 2013-05-22 13:14:18 +00:00
dkf 18b0700dbe [3613609]: Replace strcasecmp() with UTF-8-aware version. 2013-05-22 13:07:33 +00:00
dkf 4ee4a959b9 [3613609]: Replace strcasecmp() with UTF-8-aware version. 2013-05-22 12:59:45 +00:00
dkf 0a18b6e286 Fixed the weird edge case. 2013-05-22 12:55:50 +00:00
dkf 5c0e6b295a Improved tests. 2013-05-22 12:32:28 +00:00
dkf 45e4dfd471 * doc/file.n: [Bug 3613671]: Added note to portability section on the
fact that [file owned] does not produce useful results on Windows.
2013-05-22 10:36:55 +00:00
jan.nijtmans 89acc1c033 Slight improvement: if cs = "\xC0\x80" and ct = "\x00", loop would continue after NUL-byte, this should not happen. 2013-05-21 09:38:05 +00:00
jan.nijtmans be69161b43 Proposed solution for 3613609: lsort -nocase does not sort non-ASCII correctly 2013-05-21 09:27:15 +00:00
dgp 025d1997eb 3613569 Handle case when TclpTempFileNameForLibrary returns NULL. 2013-05-20 15:10:18 +00:00
dkf 648841a413 [3613567]: Corrected sense of test on results of access() in temp file creation. 2013-05-20 14:17:06 +00:00
jan.nijtmans 276bcea418 Don't #define VOID on VxWorks, as it is already typdef'd to void. Eliminate possibly conflicting LOCAL/OFFSET 2013-05-19 20:37:08 +00:00
jan.nijtmans 1ac9419646 Don't #define VOID on VxWorks, as it is already typdef'd to void. Eliminate possibly conflicting LOCAL/OFFSET 2013-05-19 20:26:29 +00:00
jan.nijtmans c0b55c5efd Fix for FreeBSD, and remove support for older FreeBSD versions. Patch by Pietro Cerutti 2013-05-19 19:09:25 +00:00
jan.nijtmans 643a9ae4b0 Fix for FreeBSD, and remove support for older FreeBSD versions. Patch by Pietro Cerutti 2013-05-19 19:03:05 +00:00
jan.nijtmans 6880761727 Don't #define VOID on VxWorks, as it is already typdef'd to void
Eliminate possibly conflicting LOCAL #define
2013-05-19 14:04:07 +00:00
jan.nijtmans 119cc47a41 Fix for FreeBSD, and remove support for older FreeBSD versions. Patch by Pietro Cerutti. 2013-05-19 13:36:42 +00:00
dkf 72a0fab411 Split tclCompCmds.c into two roughly-equal-sized pieces. 2013-05-18 13:25:11 +00:00
jan.nijtmans 7f79d3446c <sys/stat.h> inclusion is only needed when compiling for Win32, don't bother for other platforms. 2013-05-17 15:12:27 +00:00
jan.nijtmans c7e9f685b7 - eliminate compiler warning when compiling with Visual Studio.
- Make sure that _ftime() from msvcrt.dll is used, not ftime() from mingw (which might use 64-bit time_t)
2013-05-17 15:08:48 +00:00
dkf 06cfc15d05 Remove useless variables. 2013-05-17 11:02:40 +00:00
jan.nijtmans c52117cb0c Revert defining _HAVE_32BIT_TIME_T especially for mingw-4.0-rc1: Although it works, it has the side-effect that tcl8?.dll depends on msvcrt.dll symbols which are only available in later versions of msvcrt.dll. This is undesired, it really should be fixed in the mingw headers. 2013-05-17 07:24:31 +00:00
jan.nijtmans 143dd064c6 Revert defining _HAVE_32BIT_TIME_T especially for mingw-4.0-rc1: Although it works, it has the side-effect that tcl8?.dll depends on msvcrt.dll symbols which are only available in later versions of msvcrt.dll. This is undesired, it really should be fixed in the mingw headers. 2013-05-17 07:21:27 +00:00
jan.nijtmans 43d07e03c7 Revert defining _HAVE_32BIT_TIME_T especially for mingw-4.0-rc1: Although it works, it has the side-effect that tcl8?.dll depends on msvcrt.dll symbols which are only available in later versions of msvcrt.dll. This is undesired, it really should be fixed in the mingw headers. 2013-05-17 07:14:13 +00:00
andreask a425618034 Sigh. Fix version number of package "platform" in the Makefile.n files. Future: Write a small tcl script tool to extract the version information directly from the code. 2013-05-16 17:43:23 +00:00
andreask b5f1bdb187 Sigh. Fix version number of package "platform" in the Makefile.n files. Future: Write a small tcl script tool to extract the version information directly from the code. 2013-05-16 17:39:44 +00:00
dgp 007c00ed28 Confirmed that every caller of TclProcCompileProc() arranges for the
procPtr and nsPtr arguments: nsPtr == procPtr->cmdPtr->nsPtr.
This makes the test in TclCompileScript() useless. TCS() will always
compile in the current namespace of the interp.  Remove the code that
obfuscates that fact.
2013-05-16 13:24:28 +00:00
jan.nijtmans 13a2a82c81 Add support for the latest mingw-4.0-rc1. See: [http://sourceforge.net/p/mingw/mingw-org-wsl/ci/4.0-rc1/tree/NEWS] 2013-05-16 12:33:05 +00:00
jan.nijtmans b55a06a8a5 _USE_32BIT_TIME_T is already defined in tclWinPort.h 2013-05-16 12:28:33 +00:00
jan.nijtmans 87d602d36b Add support for the latest mingw-4.0-rc1. See: [http://sourceforge.net/p/mingw/mingw-org-wsl/ci/4.0-rc1/tree/NEWS] 2013-05-16 12:22:51 +00:00
jan.nijtmans 472c40ee51 Add support for the latest mingw-4.0-rc1. See: [http://sourceforge.net/p/mingw/mingw-org-wsl/ci/4.0-rc1/tree/NEWS] 2013-05-16 08:20:16 +00:00
andreask 06130c47bf Fix platform version mismatch between code and index. 2013-05-15 16:55:43 +00:00
andreask bf048c0574 Fix platform version mismatch between code and index. 2013-05-15 16:49:49 +00:00
andreask 8654042602 Fix platform version mismatch between code and index. 2013-05-15 16:46:15 +00:00
dgp 11832ca791 Disabled some code in TclCompileScript(). Test suite results are unaffected.
Does this indicate a gap in the test suite, or is this code truly useless?
2013-05-15 15:18:00 +00:00
dkf e516af3ee3 Removing a few changes that were not actually needed, and correcting comments. 2013-05-15 10:56:41 +00:00
dkf 27e4c0fd0a merge-mark 2013-05-15 10:44:17 +00:00
dkf 5f10b318a9 A better technique for [list {*}blah]. Remove the INST_LIST_EXPANDED opcode (and the complex machinery associated with it) as as it is no longer needed. 2013-05-15 10:41:52 +00:00
jan.nijtmans 45f9ea1e07 merge-mark 2013-05-15 10:41:42 +00:00
dkf 37a7a15bca merge trunk 2013-05-15 10:41:03 +00:00
dkf b3ef3c7cfa A better technique for [list {*}blah]. Remove the INST_LIST_EXPANDED opcode (and the complex machinery associated with it) as as it is no longer needed. 2013-05-15 10:38:25 +00:00
jan.nijtmans 9cebbfe5c2 merge-mark 2013-05-15 10:37:06 +00:00
jan.nijtmans 15f3cf55c9 Add missing "platform" package to the distribution as well. Reported by Pietro Cerutti. 2013-05-15 10:27:55 +00:00
dgp 609b6c70bb make dist 2013-05-14 18:44:17 +00:00
andreask 761c9d604a Merged fix to bytecode engine problem. Details in merged revision. 2013-05-13 16:59:34 +00:00
andreask 9ba818c1f1 Fixed bug in parent revision [832a1994c7] unpredictably breaking the
execution of precompiled bytecode (i.e. tbcload'ed bytecode).

The semi-inversion of a guard condition dropped the part about
TCL_BYTECODE_PRECOMPILED of the original condition, allowing the core
to attempt to recompile code for which there are no script sources
(anymore), which then fails.
2013-05-13 16:51:23 +00:00
dgp 063786234c compiler warning 2013-05-13 14:23:45 +00:00
jan.nijtmans bbf3672694 Upgrade to zlib 1.2.8 2013-05-13 14:07:56 +00:00
dkf db5f6dd1cd Optimizations and general bytecode generation improvements. 2013-05-12 00:44:22 +00:00
dkf f0b3ddae4d Corrected the stack balancing in the special [list {*} ] compiler. 2013-05-12 00:42:53 +00:00
dkf 4c0c922a42 Fix implementation of INST_LIST_EXPANDED. 2013-05-12 00:04:27 +00:00
dkf ef11e6258e Partial fix: still ongoing 2013-05-11 20:02:43 +00:00
dkf aca7dea901 Optimizations and general bytecode generation improvements. 2013-05-10 12:57:38 +00:00
oehhar b12676f0d0 Corrected args -> arg arg ... in msgcat doc 2013-05-08 15:47:31 +00:00
oehhar cac74426e8 Document mcunknown format parameters 2013-05-08 14:52:51 +00:00
oehhar 41c4cbfb48 Add install references and changes entry 2013-05-08 08:40:22 +00:00
oehhar 64e39b2d5a Also get msgcat locale from Vista+ registry key "HCU/Control Panel/Desktop : PreferredUILanguages" to honor installed language packs. msgcat now 1.5.2 2013-05-08 08:24:54 +00:00
jan.nijtmans a15d02780a No longer link Cygwin executables with zlib1.dll, but with cygz.dll.
On Cygwin64 this doesn't work, and on Cygwin32 it was a bad idea anyway.
2013-05-07 11:38:35 +00:00
jan.nijtmans b1d48abeb3 Add support for Cygwin64, which has a 64-bit "long" type.
Binary compatibility with win64 requires that all stub entries use 32-bit long's, therefore the	need for various wrapper functions/macros. 
For Tcl 9 a better solution is needed, but that cannot be done without introducing binary incompatibility.
2013-05-06 07:33:02 +00:00
jan.nijtmans 8001283708 Add support for Cygwin64, which has a 64-bit "long" type.
Binary compatibility with win64 requires that all stub entries use 32-bit long's, therefore the	need for various wrapper functions/macros. 
For Tcl 9 a better solution is needed, but that cannot be done without introducing binary incompatibility.
2013-05-06 07:22:17 +00:00
jan.nijtmans 896f59c3a2 Add support for Cygwin64, which has a 64-bit "long" type.
Binary compatibility with win64 requires that all stub entries use 32-bit long's, therefore the	need for various wrapper functions/macros. 
For Tcl 9 a better solution is needed, but that cannot be done without introducing binary incompatibility.
2013-05-06 06:52:53 +00:00
jan.nijtmans 70044260ae merge-mark 2013-05-06 06:48:34 +00:00
ferrieux 1f2616960d Backport 8.6's fix [checkin 5af0d249de] to [Bug 2901998]: Inconsistent buffered I/O. Tcl's I/O now flushes buffered output before reading, discards buffered input before writing, etc. 2013-05-01 21:13:03 +00:00
andreask e6565ad233 (::platform::LibcVersion): Followup to the 2013-01-30 change. The RE
become too restrictive again. SuSe added a timestamp after the
version. Loosened up a bit. Bumped package to version 1.0.12.
2013-04-30 18:49:08 +00:00
andreask ddae63135f (::platform::LibcVersion): Followup to the 2013-01-30 change. The RE
become too restrictive again. SuSe added a timestamp after the
version. Loosened up a bit. Bumped package to version 1.0.12.
2013-04-30 18:46:44 +00:00
andreask a034a4b99c (::platform::LibcVersion): Followup to the 2013-01-30 change. The RE
become too restrictive again. SuSe added a timestamp after the
version. Loosened up a bit. Bumped package to version 1.0.12.
2013-04-30 18:43:28 +00:00
dkf 5420285485 Improve code generation for [array set] in a common case. 2013-04-29 09:31:53 +00:00
jan.nijtmans 13c0e41521 merge-mark 2013-04-25 07:40:04 +00:00
jan.nijtmans 2fb979594a merge-mark 2013-04-25 07:32:21 +00:00
jan.nijtmans a6ac841a5d Update dde to version 1.3.3.
Update registry to version 1.2.2. 
(the same as distributed with Tcl 8.5.14)
2013-04-25 07:28:08 +00:00
jan.nijtmans 6a412a3168 Implement Tcl_NewBooleanObj, Tcl_DbNewBooleanObj and Tcl_SetBooleanObj as macros using Tcl_NewIntObj, Tcl_DbNewLongObj and Tcl_SetIntObj.
Starting with Tcl 8.5, this is exactly the same, it only eliminates code duplication. 
Eliminate use of NO_WIDE_TYPE everywhere: It's exactly the same as TCL_WIDE_INT_IS_LONG
2013-04-23 14:15:14 +00:00
jan.nijtmans 7554f7ffb1 Split ChangeLog in 3 parts, just as already done on trunk 2013-04-23 13:30:50 +00:00
jan.nijtmans 2c6aa5c960 Implement Tcl_NewBooleanObj, Tcl_DbNewBooleanObj and Tcl_SetBooleanObj as macros using Tcl_NewIntObj, Tcl_DbNewLongObj and Tcl_SetIntObj.
Starting with Tcl 8.5, this is exactly the same, it only eliminates code duplication.
2013-04-23 10:39:33 +00:00
jan.nijtmans 8474c20bc6 Implement many Tcl_*Var* functions and Tcl_GetIndexFromObj as (faster/stack-saving) macros around resp their Tcl_*Var*2 equivalent and Tcl_GetIndexFromObjStruct 2013-04-19 09:12:12 +00:00
jan.nijtmans 1197921203 Implement many Tcl_*Var* functions and Tcl_GetIndexFromObj as (faster/stack-saving) macros around resp their Tcl_*Var*2 equivalent and Tcl_GetIndexFromObjStruct 2013-04-19 08:41:15 +00:00
jan.nijtmans 911c3a02b5 Implement many Tcl_*Var* functions and Tcl_GetIndexFromObj as (faster/stack-saving) macros around resp their Tcl_*Var*2 equivalent and Tcl_GetIndexFromObjStruct 2013-04-19 08:19:07 +00:00
dgp 1de5433c5d merge-mark 2013-04-16 20:20:39 +00:00
dgp 5cbeb42aff 3610404 When we let go of commandPtr in TclEvalObjvInternal, NULL out the
variable so we don't mistakenly try to use the value later after we freed it.
2013-04-16 20:18:19 +00:00
dgp cc984c4e6e merge trunk 2013-04-16 17:34:32 +00:00
jan.nijtmans 6b60065860 Implement Tcl_Pkg* functions as macro's around Tcl_Pkg*Ex. This saves stack space, is (marginally) faster, while still being fully up/down compatible. It makes pkgb.so loadable in "novem" without the need to change the Tcl_PkgProvide() call to Tcl_PkgProvideEx(). 2013-04-12 11:27:37 +00:00
jan.nijtmans 9b0ea3ca88 Implement Tcl_Pkg* functions as macro's around Tcl_Pkg*Ex. This saves stack space, is (marginally) faster, while still being fully up/down compatible. It makes pkgb.so loadable in "novem" without the need to change the Tcl_PkgProvide() call to Tcl_PkgProvideEx(). 2013-04-12 11:22:43 +00:00
jan.nijtmans a0b6194b82 Implement Tcl_Pkg* functions as macro's around Tcl_Pkg*Ex. This saves stack space, is (marginally) faster, while still being fully up/down compatible. It makes pkgb.so loadable in "novem" without the need to change the Tcl_PkgProvide() call to Tcl_PkgProvideEx(). 2013-04-12 11:08:18 +00:00
dgp 64bf3c8f4a More progress. NR-enable [interp] and [$slave], completely with
invokehidden subcommand.  Test suite passes with no errors.
2013-04-11 21:30:40 +00:00
dgp 064f7e5513 More revisions let multi-interp test case work, but at cost of panics
and segfaults.  Pushing the NRE-envelope.
2013-04-11 19:36:37 +00:00
dgp 6597872335 New internal routine TclNRInvoke() - NR-enabled path through the machinery
behind invokehidden commands.
2013-04-11 14:39:56 +00:00
dgp 5044035ec0 merge trunk 2013-04-11 13:35:41 +00:00
dgp 5c4737c8d8 merge mark 2013-04-11 12:26:45 +00:00
dkf b6b0d1b8dd added some test cases, based on bug report 2013-04-09 20:01:08 +00:00
dgp 1ddb66bfda Use the double-secret iPtr->lookupNsPtr field to get post-enter-trace
re-resolutions of commands done in the right context for oo forwards.
2013-04-09 19:04:04 +00:00
jan.nijtmans f2aea5424e merge-mark 2013-04-09 11:06:43 +00:00
jan.nijtmans 7bfc04bfbe Allow URLs that don't have a path, but a query, e.g. http://example.com?foo=bar and bump http to 2.5.8. 2013-04-09 11:04:49 +00:00
jan.nijtmans f972f06872 Make (deprecated) Tcl_EvalObj/Tcl_GlobalEvalObj macro's always, not only when using stubs. 2013-04-09 10:10:34 +00:00
jan.nijtmans 71d2777cfd fix http package installation 2013-04-08 20:29:44 +00:00
dgp 1ba9a90c6e 3610026 Stop crash when the number of "colors" in a regular expression
overflows a short int.  Thanks to Heikki Linnakangas for the report and
the patch.
2013-04-08 20:07:07 +00:00
dgp 55102c2b83 3610026 Stop crash when the number of "colors" in a regular expression
overflows a short int.  Thanks to Heikki Linnakangas for the report and
the patch.
2013-04-08 19:59:03 +00:00
dgp 7ff52157ed 3610026 Stop crash when the number of "colors" in a regular expression
overflows a short int.  Thanks to Heikki Linnakangas for the report and
the patch.
2013-04-08 19:45:55 +00:00
dgp 2e7505ce3d Demand the error message indicating the purpose of the test. 2013-04-08 19:30:51 +00:00
dgp 6b17a1e25a Revise TclNREvalObjv so that pre-resolution of the Command by a caller
does not force suppression of exception handling.  Let those be separable
demands.  Aim is to bring TclObjInvoke*() into the fold.
2013-04-08 18:11:33 +00:00
dgp 93b8f2696a Documentation fix. 2013-04-08 15:58:47 +00:00
dgp b6f570180b 3610026 Stop segfault when regexp overflows color limits. 2013-04-08 15:15:40 +00:00
dgp e6f4d201ce merge-mark 2013-04-04 17:18:35 +00:00
max e0dbb5bd62 Allow URLs that don't have a path, but a query,
e.g. http://example.com?foo=bar and bump http to 2.7.12.
2013-04-04 17:08:43 +00:00
max 8b102ddebc Bump http to 2.8.7 in the other dozen places as well. 2013-04-04 15:00:49 +00:00
max ddfc3d80c5 Bump http to 2.8.7 2013-04-04 14:52:54 +00:00
max 2eed34dc23 Allow URLs that don't have a path, but a query query, e.g. http://example.com?foo=bar . 2013-04-04 14:42:19 +00:00
jan.nijtmans b065abd46c Make Tcl_EvalObj/Tcl_GlobalEvalObj a macro always, not only when using stubs. 2013-04-04 07:07:28 +00:00
jan.nijtmans bce112e425 some more "ignore-glob" patterns 2013-04-03 20:50:43 +00:00
jan.nijtmans 5d03958f22 merge-mark 2013-04-03 13:27:25 +00:00
dgp 776001cd14 merge-mark 2013-04-03 13:15:47 +00:00
jan.nijtmans a76ebfc825 merge-mark 2013-03-28 14:49:44 +00:00
dgp 3105dcac7e Tolerate NULL interps 2013-03-27 18:48:07 +00:00
jan.nijtmans 79ad7f2edc merge-mark 2013-03-27 14:13:04 +00:00
jan.nijtmans de97184949 merge-mark 2013-03-27 10:49:47 +00:00
venkat 4c095a869b Update to tzdata2013b 2013-03-22 23:08:53 +00:00
jan.nijtmans 52cbdda306 If TCL_NO_DEPRECATED is defined, don't depend on Tcl_CreateMathFunc()/Tcl_SaveResult() in testcases any more.
Prevent endless loop in Tcl_AddObjErrorInfo, when TCL_NO_DEPRECATED is defined.
2013-03-22 13:22:40 +00:00
jan.nijtmans 88a893a388 merge-mark 2013-03-21 14:56:44 +00:00
jan.nijtmans 453c878fa9 Remove duplicated tests. The enhancements to fCmd-30.[12] and the new test case fCmd-30.3 were backported from Tcl8.6, but the original tests were not removed. 2013-03-21 14:45:09 +00:00
dgp d9db7b2587 test suite hygiene 2013-03-21 14:42:07 +00:00
dgp 4c35f9a03a 2102614 Add ensemble indexing support to [auto_mkindex]. Thanks Brian Griffin. 2013-03-21 14:35:34 +00:00
dgp fc2ae2acaf Bring forward tests to trunk 2013-03-20 15:39:48 +00:00
jan.nijtmans 09d7c9d217 Slightly more correct: If FindFirstFile() fails, the error should be "no such file or directory" (ENOENT) not "permission denied" (EACCES). 2013-03-20 13:41:50 +00:00
jan.nijtmans c988bb3c5d Handle the (unlikely) case that the file is deleted in between. Suggested by Harald Oehlmann (Thanks!) 2013-03-19 14:59:26 +00:00
dgp 06a824d706 3597000 Consistent [file copy] result. 2013-03-19 14:39:09 +00:00
jan.nijtmans 39e89c1b69 [Bug 3608360]: Incompatible behaviour of "file exists". 2013-03-19 13:57:30 +00:00
dgp dbafb5fcfc Test independence in fCmd.test 2013-03-19 13:13:37 +00:00
jan.nijtmans 2d0dd29466 Back out bug fix for [Bug 2893771], because it was the cause of the regression. 2013-03-19 11:55:47 +00:00
dkf 28d2c1e4cf [Bug 3606390]: Fix isolation of test string-6.37. 2013-03-19 10:18:18 +00:00
dkf b2c63a9461 [Bug 3606387]: Fix isolation of test scan-7.4.
Also updated scan.test to use tcltest 2 properly.
2013-03-19 10:01:26 +00:00
dgp aad97a767b Test independence in fileSystem.test 2013-03-18 18:37:39 +00:00
dgp 3d4bb88f48 Test independence in unixFCmd.test 2013-03-18 18:00:12 +00:00
dkf f8b482aafe [Bug 3608360]: Test to make sure we never let [file exists] do globbing. 2013-03-18 14:30:32 +00:00
jan.nijtmans 84d3dc55fc Patch by Andrew Shadura, providing better support for three architectures they have in Debian. 2013-03-12 08:47:52 +00:00
dgp a3d5ba530a 3606391 trace.test test independence. 2013-03-11 19:06:23 +00:00
dgp 852b1c4ad2 Greater protection against double TclFreeObj() calls in TCL_MEM_DEBUG mode. 2013-03-11 17:40:14 +00:00
dgp b2f133f23c 3607246,3607372 Unbalanced refcounts of literals in the global literal table. 2013-03-11 12:55:29 +00:00
dgp 21601a3a4a 3607372 Correct literal refcounting. 2013-03-08 21:14:07 +00:00
jan.nijtmans 57fa6f9669 msvc compiler warning: signed-unsigned mismatch. 2013-03-08 20:57:11 +00:00
dgp 1355f9df46 Correct unbalanced effect of TclInvalidateCmdLiteral() on the refcounts
of literals in the global table.
2013-03-07 21:16:29 +00:00
dgp 31f7c64e7d Cleaner error handling in fixempties(). 2013-03-06 21:55:29 +00:00
dgp 1d6248a516 3604074,3606683 Rewrite of the fixempties() routine (and supporting routines)
to completely eliminate the infinite loop hazard.  Thanks to Tom Lane for the
much improved solution.
2013-03-06 20:50:53 +00:00
dgp b9e95ae529 merge trunk 2013-03-06 20:25:37 +00:00
dgp f233a71161 Rework into Tcl 8.5+ coding style. 2013-03-06 20:19:34 +00:00
dgp 41cb679571 Indent reduction in fixempties() 2013-03-06 18:10:30 +00:00
dgp 7b9e7f283b Use flag argument to combine copy(nonempty)* routines into copy* routines. 2013-03-06 17:33:39 +00:00
dgp 1a11145339 New routine hasnonemptyout() for minor improvement to new fixempties(). 2013-03-06 16:27:38 +00:00
jan.nijtmans eb2860258b Tell fossil and Eclipse that the default eol-convention is LF.
Tell fossil which files are binary and which files should never be committed. 
Tell Eclipse that the default encoding is UTF-8
2013-03-06 12:26:23 +00:00
dgp 86eba6192a New internal routine TclFetchLiteral() for better CompileEnv encapsulation. 2013-03-05 22:13:30 +00:00
dgp b96c6536cb Remove from tclCompile.h declarations used in only one source file. 2013-03-05 20:19:14 +00:00
dgp 48a03a59dc Remove TclInitCompilation() declaration with no definition. 2013-03-05 19:48:42 +00:00
dgp 78af51451a Contributed patch from Tom Lane <tgl@users.sf.net>.
Rewrites parts of the regexp engine to avoid infinite loops.
2013-03-05 14:01:48 +00:00
dgp 64e9416261 merge mark 2013-03-04 15:41:59 +00:00
jenglish 3562bfb14b unix/configure: regenerated. 2013-03-03 17:58:34 +00:00
joe 80b3ef95a8 Unix terminal and serial port I/O: retire obsolete termio and sgtty code,
general cleanup.  See SF [Bug 3606258] for details.
2013-03-03 17:57:45 +00:00
joe d98d74151e ... which means struct TtyState can be replaced with struct FileState. 2013-03-02 20:32:43 +00:00
joe bf38d5992f Member TtyState.savedState set in TtyInit() but never subsequently used.
This can go away...
2013-03-02 20:06:09 +00:00
jenglish cd57fb7f7d TtyParseMode signature simplification: take single pointer to struct TtyAttrs
instead of separate pointers to each member.
2013-03-02 07:52:05 +00:00
jenglish 87cfb6b250 More ifdef shuffling: GETREADQUEUE and GETWRITEQEUE always defined,
dummy implementations return 0 if the requisite ioctls are not present.
2013-03-02 07:30:15 +00:00
jenglish 22e4896294 Do not use strncasecmp(). It is nonstandard and not portable.
Use Tcl_UtfNcasecmp() instead.
2013-03-02 07:22:21 +00:00
jenglish 05d33e0fe7 unix/configure: regenerated. 2013-03-01 23:57:13 +00:00
jenglish 82b98d6ede Replace broken SC_SERIAL_PORT macro with plain AC_CHECK_HEADERS tests. 2013-03-01 23:53:49 +00:00
jenglish 38d26a919e ifdef shuffling: TIOCMC[GS]ET ioctls are not specified by POSIX,
so we can't assume they are present just because we HAVE_TERMIOS_H.
Conversely, if they are present then the subsidiary flags
TIOCM_{DTR|RTS} are almost certainly there as well, so that
ifdeffery can be removed.

And lastly, ifdefs for TIOCSBRK/TIOCCBRK are still needed.
(Those are logically separate functions even though TIP#35
lumped them together with DTR and RTS in -ttycontrol.
POSIX provides tcsendbreak() for this purpose, but that
interface doesn't fit with the TIP#35 API.)

KNOWN DEFECT: if a hypothetical Unix system is missing TIOCMCGET
but has TIOCSBRK/TIOCCBRK, the latter function will nevertheless
be unavailable.  Accounting for this possibility does not strike
me as being worth the ifdefs.
2013-03-01 21:13:45 +00:00
dkf ab629d99ba [Bug 3606397]: Make test work in isolation, and corrected what was being tested. 2013-03-01 18:47:20 +00:00
dkf 4b31536c4a [Bug 3606542]: Add missing constraint to test. 2013-03-01 18:33:36 +00:00
jenglish a30cdc4ccf TtyGetOptionProc: remove inoperative comment "The string returned by
this function is in static storage [...]"; this is not the case
(and apparently never has been)
2013-02-28 21:52:02 +00:00
dgp 09ea3ba2ca Revise TclReleaseLiteral() to tolerate a NULL interp argument.
Update callers and revise mistaken comments.
2013-02-28 17:08:43 +00:00
mig 0fa1988fb0 fix coroutine-4.6 so that it runs in isolation, [Bug 3606395] 2013-02-28 14:19:04 +00:00
jan.nijtmans d3a0c83f09 Allow Tcl to be compiled even if Tcl_Eval, Tcl_GetVar, ... are macros. 2013-02-28 08:29:35 +00:00
jenglish 5436b7c33b TtyGetBaud(), TtyGetSpeed(): use POSIX speed_t typedef
instead of 'unsigned long'.
2013-02-27 23:48:00 +00:00
jenglish 5efbf356ec Remove IOSTATE facade: it's always a struct termios. 2013-02-27 22:30:47 +00:00
jenglish 172de00de5 ifdef reduction - missed a couple spots (#if ... defined(USE_TERMIO)) 2013-02-27 22:12:43 +00:00
jenglish 4a2ab86325 ifdef reduction: SUPPORTS_TTY defined if and only if USE_TERMIOS defined. 2013-02-27 21:09:24 +00:00
jenglish 6765f7766a For termios, we never want DIRECT_BAUD; always use the symbolic constants
as prescribed by POSIX.
2013-02-27 20:33:33 +00:00
jenglish d19847932e termios cleanup step 1: remove USE_TERMIO and USE_SGTTY conditional sections
(mechanical change, done with `unifdef`).
2013-02-27 19:53:04 +00:00
dkf 627504c503 minor: formatting tweaks in the change log 2013-02-27 17:48:10 +00:00
dgp 19a639608f Somewhat tidier, less daunting test. 2013-02-27 15:33:06 +00:00
jan.nijtmans c04398e133 Wrap test-case over multiple lines 2013-02-27 13:26:26 +00:00
jan.nijtmans 268394dbb5 Some VOID -> void, Tcl_TraceVar -> Tcl_TraceVar2 and Tcl_VarTraceInfo -> Tcl_VarTraceInfo2 conversions. 2013-02-27 11:42:39 +00:00
jan.nijtmans 5789086c24 [Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the test-case and the patch. 2013-02-27 08:19:27 +00:00
dgp db61e9a4be Remove from tclIO.h structs used only in tclIO.c. 2013-02-26 17:48:09 +00:00
dkf ba5b356435 [Bug 3605120]: Stop test chan-io-28.7 from hanging when run standalone. 2013-02-26 13:37:42 +00:00
jan.nijtmans 71c78f086f Don't panic if Tcl_ConvertToType is called for a type that doesn't have a setFromAnyProc, create a proper error message. 2013-02-26 10:17:39 +00:00
dkf 482a2c710e [Bug 3605721]: Test independence fixes for binary-41.* 2013-02-25 18:31:45 +00:00
dgp 39e3f11942 Repair linked list management in Tcl_DeleteCloseHandler().
CloseCallback struct used only locally.  Remove from tclIO.h.
2013-02-25 18:17:26 +00:00
dgp 96417ebbb8 LimitHandler struct used only locally. Remove from tclInt.h 2013-02-25 16:41:46 +00:00
dgp fc262ab6bb Remove unused struct InterpList. 2013-02-25 16:00:48 +00:00
dgp 712b68cc80 Array Search struct used only locally. Remove from tclInt.h. 2013-02-25 15:45:13 +00:00
dgp b436f14398 3605719,3605720 Test independence. Thanks Rolf Ade for patches. 2013-02-25 14:55:17 +00:00
jan.nijtmans e594dd2267 For Unicode 6.3, mongolian vowel separator (U+180e) is nominated to change character class from Space to Control character.
Make sure that "string is space" will continue to return 1 for this character. See TIP #413.
2013-02-25 13:16:21 +00:00
jan.nijtmans ef6c187c6e Bug [3599194]: compat/fake-rfc2553.c is broken 2013-02-23 20:00:49 +00:00
dgp 1a5673d6d1 unused variables 2013-02-22 19:10:32 +00:00
dgp 4cc2a56649 Shift more burden of smart cleanup onto the TclFreeCompileEnv() routine.
Stop crashes when the hookProc raises an error.
2013-02-22 19:05:56 +00:00
dgp cf93250674 3605447 Make sure the -clear option to [namespace export] always clears,
whether or not new export patterns are specified.
2013-02-21 03:24:19 +00:00
jan.nijtmans e878a050b2 [Bug 3605401]: Compiler error with latest mingw-w64 headers. 2013-02-20 11:43:28 +00:00
jan.nijtmans 4144a690cb [Bug 3605401]: Compiler error with latest mingw-w64 headers. 2013-02-20 11:40:10 +00:00
jan.nijtmans 8c18c33bb8 Bug 3605401: Compiler error with latest mingw-w64 headers 2013-02-20 10:25:59 +00:00
jan.nijtmans 1973e8e40f Fix bug #2438181: Incorrect error reporting in traces.
Test-case and fix provided by Poor Yorick.
2013-02-19 11:36:12 +00:00
jan.nijtmans 08bc505b41 Use (preferred) Tcl_ObjSetVar2 in stead of Tcl_SetVar in tclAppInit.c, both UNIX and Win. 2013-02-17 21:03:56 +00:00
dgp 76602aa738 3604074 Fix regexp optimization to stop hanging on the expression
((((((((a)*)*)*)*)*)*)*)* .  Thanks to Bjørn Grathwohl for discovery.
2013-02-15 15:32:30 +00:00
jan.nijtmans 339bf30461 Eliminate last use of Tcl_SetResult (except the use in the Test suite)
Fix depreciation message in tcl.h
2013-02-15 13:01:43 +00:00
jan.nijtmans c5687412d6 merge-mark 2013-02-14 13:49:11 +00:00
oehhar 4396044600 ChangeLog corrected: msgcat issue must not be XP specific 2013-02-14 13:24:40 +00:00
jan.nijtmans 882dc5449d [Bug 3604576]: msgcat-1.5.0.tm error on windows XP 2013-02-14 12:11:55 +00:00
jan.nijtmans 54cce1ee0e Improve some comments and quoting, no change in functionality.
Only check for refCount == 0x61616161 for TCL_MEM_DEBUG build.
2013-02-14 09:01:37 +00:00
dkf 3b9c3fb04e Fix [Bug 3603553]. 2013-02-11 08:57:53 +00:00
dkf 200b0db200 Correction to comment in re key buffer size. 2013-02-11 08:54:09 +00:00
dkf deb93dc75c [Bug 3603553]: Ensure that data gets written to the underlying stream by
compressing transforms when the amount of data to be written is one
buffer's-worth; problem was particularly likely to occur when compressing
large quantities of not-very-compressible data.

Many thanks to Piera Poggio (vampiera) for reporting.
2013-02-11 08:11:28 +00:00
jan.nijtmans a5a7ae5f47 Unbreak msvc builds, by depending on tclPort.h for inclusion of <sys/stat.h> 2013-02-10 13:26:33 +00:00
dkf 9a43dd0c3b [Bug 3603695]: Change the way that the [oo::object] 'varname' method is
implemented so that there are no longer problems with interactions due to the
resolver. Thanks to Taylor Venable <tcvena@gmail.com> for identifying the
problem.
2013-02-09 12:30:32 +00:00
dkf 9ec95d17f8 Apply a fix for the bug. Passes the test suite now. 2013-02-09 12:25:36 +00:00
dkf 995e26088f characterize bug 2013-02-08 14:07:10 +00:00
dkf 2015734692 [3603804]: Improve example to actually be capable of throwing the trapped errors 2013-02-08 09:23:56 +00:00
dkf 9f0660744c [3603557]: Increase the maximum depth of recursion used when duplicating an
automaton in response to encountering a "wild" RE that hit the previous limit.
Allow the limit (DUPTRAVERSE_MAX_DEPTH) to be set by defining its value in the
Makefile. Problem reported by Jonathan Mills.
2013-02-08 01:44:17 +00:00
jan.nijtmans 52c2de3cb8 Tcl_InvalidateStringRep -> TclInvalidateStringRep 2013-02-07 13:55:38 +00:00
dgp aee7d6fea4 [Bug 3603434] Make sure TclpObjNormalizePath() properly declares "a:/" to
be normalized, even when no "A:" drive is present on the system.
2013-02-05 16:56:01 +00:00
dkf 1226e764ba [3433012]: Added dummy version of TclpLoadMemory to use in the event that a
platform thinks it can load from memory but cannot actually do so due to it
being disabled at configuration time.
2013-02-05 09:21:13 +00:00
dgp bfab34ad8b Merge in fix for 3602706 2013-02-04 20:48:50 +00:00
dkf 57a9d5c7a9 [3603163]: Stop crash in weird case where [eval] is used to make [array set]
get confused about whether there is a local variable table or not. Thanks to
Poor Yorick for identifying a reproducible crashing case.
2013-02-04 14:40:40 +00:00
dkf e24489dcce [3603163]: Prevent odd crashes in 'eval {array set ...}' 2013-02-04 14:30:05 +00:00
jan.nijtmans 9e6725acf0 Eliminate all Tcl_ConvertToType calls and all direct calls to typePtr->setFromAnyProc (except the call from inside the Tcl_ConvertToType function) from the Tcl core. 2013-02-04 10:51:00 +00:00
jan.nijtmans 9088907888 More symmetric Tcl_(Incr|Decr)RefCount call, preventing bugs like #3601260 and #3602706 2013-02-03 11:34:01 +00:00
dkf 877a5f8149 merge trunk 2013-02-01 15:32:19 +00:00
stwo 8f72fe1eb9 Bug [3598282]: Stop using installData.tcl to install the timezone files. 2013-01-31 13:50:38 +00:00
jan.nijtmans 9a5465ed60 merge-mark 2013-01-31 10:32:43 +00:00
jan.nijtmans 16869d9a05 merge core-8-5-branch 2013-01-31 10:31:55 +00:00
dgp 4eaaa750d1 For traces and embedding support, select modernizations from Patrick Fradin. 2013-01-31 04:34:11 +00:00
dgp 6d259f9319 Better testevent cleanup and event loop management 2013-01-31 04:07:11 +00:00
dgp b9069b9577 Remove old vars and tests, now unused, one that collides with tcltest. 2013-01-30 22:40:06 +00:00
dgp c241c33749 missing testevent delete 2013-01-30 22:08:05 +00:00
dgp 3c9637c2fe For Parse/eval & msgcat, select modernizations from Patrick Fradin + -debug fix 2013-01-30 20:51:43 +00:00
andreask a071678d02 (::platform::LibcVersion): See [Bug 3599098]: Fixed the RE extracting
the version to avoid issues with recent changes to the glibc
banner. Now targeting a less variable part of the string. Bumped
package to version 1.0.11.
2013-01-30 19:27:34 +00:00
dgp 7c1d7acf56 For [package] etc., select modernizations from Patrick Fradin. 2013-01-30 19:00:27 +00:00
dgp aee1b56cc2 In the script library, selected modernizations from Patrick Fradin. 2013-01-30 17:58:00 +00:00
dgp 7a00fde1d2 More improvements found browsing tcltest 2013-01-30 17:22:49 +00:00
dgp 4e523443fe Fradin improvements in test suite too 2013-01-30 16:52:11 +00:00
dgp 804b3bb41e For tcltest, selected modernizations and style improvements from Patrick Fradin. 2013-01-30 16:34:10 +00:00
mig 1e68029cac empty, to jump over mistake 2013-01-29 17:50:15 +00:00
dkf e87a46437e Improve code generation for some ensemble subcommands in cases where full
compilation is impossible yet full ensemble invoking is unnecessary.
Also fix a few minor doc formatting bugs.
2013-01-28 15:16:59 +00:00
dkf 1139530e78 More extensive use of the techniques to improve other edge cases in ensemble compilation. 2013-01-28 11:43:59 +00:00
dkf 5887924a63 Slightly better compilation of some [array] cases. 2013-01-28 01:27:32 +00:00
dkf 5fea85e6d3 merge trunk 2013-01-28 00:57:04 +00:00
jan.nijtmans 13dcbf7d2f [Bug 3601804]: platformCPUID segmentation fault on Darwin 2013-01-26 16:55:24 +00:00
mig 28bc611c7b remove unused code 2013-01-25 18:47:45 +00:00
jan.nijtmans 9177f9a41b Another memory leak, and one Tcl_Free -> ckfree 2013-01-25 13:07:59 +00:00
jan.nijtmans 6ec16f5f96 fix minor memory leak 2013-01-25 11:53:41 +00:00
jan.nijtmans 6abe764edc Eliminate some unneeded usages of Tcl_SetResult, Tcl_AddObjErrorInfo
Fix "make test-packages" on cygwin
2013-01-25 11:48:29 +00:00
jan.nijtmans a0eb86a864 new version of cpuid, which doesn't use the edi register any more. Hopefully that works better on some Darwin. 2013-01-24 22:02:30 +00:00
jan.nijtmans f028c958cc revert [8e83219e38]: it doesn't work on i386 2013-01-24 21:31:09 +00:00
dgp 1a0cb53eec Silence some compiler warnings. 2013-01-24 20:46:58 +00:00
jan.nijtmans 587cef5259 Simplify STRING_AT macro.
Protect Tcl_GetIndexFromObjStruct from invalid "offset" values, like 0 or -1. Undocumented, because I don't want to promote people start using that.
2013-01-24 08:22:40 +00:00
jan.nijtmans 3a39b4007c Fix [2911139]: connect asynchronously, but without unnecessary internal waits. 2013-01-23 14:04:27 +00:00
jan.nijtmans 6c54d4f137 Bug [3601804]: platformCPUID segmentation fault on Darwin 2013-01-22 21:58:18 +00:00
jan.nijtmans 9085296627 Put back Tcl[GS]etStartupScript(Path|FileName) in private stub table, so extensions using this (like Tk 8.4) will continue to work in all Tcl 8.x versions.
Extensions using this still cannot be compiled against Tcl 8.6 headers.
2013-01-21 13:51:11 +00:00
jan.nijtmans 98a40cff2c fix Bug 3598300 on MacOSX too 2013-01-19 17:49:16 +00:00
jan.nijtmans 581c5b94ab [Bug 3598300]: unix: tcl.h does not include sys/stat.h.
(with an exception for OSX, for now)
2013-01-18 14:44:45 +00:00
mig a6461e6b0d COMPILE_DEBUG big: fix bug in stack verification for {*} 2013-01-17 15:13:40 +00:00
dkf 0a8b2b3150 [3600328]: Fix problems caused by buggy [array] compilation inside a buggy
ensemble compilation (which had the net result of producing *very* wrong code).
2013-01-17 15:08:46 +00:00
dkf d31e503f35 merge trunk 2013-01-17 13:46:52 +00:00
jan.nijtmans 6949095cb4 revert [8abba84224], and make sure that every source file that uses Tcl_StatBuf has an "#include <sys/stat.h>" before including tcl.h 2013-01-17 08:38:41 +00:00
dkf de9162b578 merge trunk 2013-01-16 14:16:34 +00:00
dkf f3fe26d49f [Bug 3601086]: Register zlib config as iso8859-1 (a superset of ascii) as that
is an encoding we guarantee to support without loading encoding files.
2013-01-16 11:01:46 +00:00
jan.nijtmans 423ee90c6a Allow win32 build with -DTCL_NO_DEPRECATED, just as the UNIX build, off by default.
Define Tcl_EvalObj and Tcl_GlobalEvalObj as macros, even when TCL_NO_DEPRECATED is defined, so Tk can benefit from it too.
2013-01-16 09:58:26 +00:00
jan.nijtmans eebca1b422 [Bug 3598300]: unix: tcl.h does not include sys/stat.h 2013-01-15 21:06:32 +00:00
mig 0da09b361f peephole INST_START_CMD before entering the big switch in tebc 2013-01-15 19:37:30 +00:00
mig d7bd3ea929 merge trunk 2013-01-15 19:35:52 +00:00
mig 4a942632c1 remove [4522b11989], it breaks the build on linux 2013-01-15 19:26:45 +00:00
jan.nijtmans 19ba6d24b8 REMOVED FROM TRUNK: buggy, breaks the build on linux. [Bug 3598300]: unix: tcl.h does not include sys/stat.h 2013-01-15 17:38:57 +00:00
jan.nijtmans 89971c7559 forgot two #undef's 2013-01-14 15:23:41 +00:00
jan.nijtmans e267380dad Put back Tcl_[GS]etStartupScript in internal stub table, so extensions using this, compiled against 8.5 headers still run in Tcl 8.6. 2013-01-14 15:19:18 +00:00
mig 0e4e7f881d Various bits of cleanup, efficiencies, and comment documentation in tclVar.c (from mig-review) 2013-01-13 23:26:02 +00:00
ferrieux 89369231f5 Clarify readable fileevent "false positives" in the case of multibyte encodings/transforms [Bug 3436609]. 2013-01-13 18:12:41 +00:00
jan.nijtmans a2021967ac If TCL_NO_DEPRECATED is defined, make sure that TIP #139 functions all are taken from the public stub table, even if the inclusion is through tclInt.h. 2013-01-13 09:13:45 +00:00
jan.nijtmans 9822c32dd0 Put back TclBackgroundException in internal stub table, so extensions using this, compiled against 8.5 headers still run in Tcl 8.6. 2013-01-12 21:57:24 +00:00
mig 25ab9d5408 discouraging the compiler from re-reading *pc in the peephole loop, part2 (any diff?) 2013-01-12 10:53:23 +00:00
mig 7715309bee discouraging the compiler from re-reading *pc in the peephole loop 2013-01-12 10:49:25 +00:00
mig b4e2d9a5f7 even better ... or so I hope: also inlining INST_PUSH1 in the peephole, checking for ISC after LOAD1 and PUSH1 2013-01-12 10:14:06 +00:00
mig e81a0740ec merge trunk 2013-01-11 23:29:46 +00:00
mig d81457480e better comments 2013-01-11 21:16:07 +00:00
mig eff3ee2c12 fix for consecutive ISC (produced by [while 1 {...}) 2013-01-11 18:05:50 +00:00
dgp e5f2221983 Test for Bug 1884496 (not buggy on trunk). 2013-01-11 17:27:38 +00:00
mig 216a40de66 testing a cheaper(?) INST_START_COMMAND 2013-01-11 15:37:10 +00:00
dkf 793f8e5aba merge trunk 2013-01-11 14:15:12 +00:00
dkf ee55e0197b First attempt at fixing problems caused by [array set] inside [namespace eval],
which caused partial bytecode generation followed by a reject which triggered
the issuing of generic ensemble code with an extra push of the variable name at
the start (which got the stack depth wrong).
2013-01-11 14:04:33 +00:00
mig 43988caaa2 Name functions according to 'what' instead of 'how' in the [tailcall]
machinery, in view of making public some parts of it.
2013-01-11 12:42:14 +00:00
mig d562dc0f60 tailcall now running in a simpler model, with no eval-flags and no nre-stack rewriting; yieldto also requires one fewer bounce. Mostly from mig-nre-mods 2013-01-10 21:18:52 +00:00
mig 9f0eb68928 fix off-by-one error introduced in bd7d7a2061 2013-01-10 18:17:33 +00:00
jan.nijtmans 8f2f7117fc [Bug 3599395]: http assumes status line is a proper tcl list. 2013-01-09 14:07:08 +00:00
jan.nijtmans 24b681cb7a $builddir is a local variable 2013-01-08 13:03:01 +00:00
jan.nijtmans f1b40ee639 [Bug 3092089]: [file normalize] can remove path components.
[Bug 3587096] win vista/7: "can't find init.tcl" when called via junction.
2013-01-08 10:27:42 +00:00
jan.nijtmans ada7e74894 mSys doesn't have $PWD. Reported by Rene Zaumseil on Tcl Core list 2013-01-08 08:08:28 +00:00
jan.nijtmans 978558169e Restrict the stub library to only use Tcl_PkgRequireEx, Tcl_ResetResult and Tcl_AppendResult, not any other function.
This puts least restrictions on eventual Tcl 9 stubs re-organization, and it works on the widest range of Tcl versions.
2013-01-07 14:40:56 +00:00
jan.nijtmans 0d214a0a14 merge-mark. Hoping trunk is OK now, again ;-( 2013-01-07 13:00:26 +00:00
jan.nijtmans b2dabdc1eb Don't depend on Spencer-specific regexp syntax (/u and /U) any more in unrelated places
.  Bump http package to 2.8.6.
2013-01-06 20:40:57 +00:00
dkf 4a7aba80a6 merge trunk 2013-01-05 18:16:06 +00:00
mig a8a9d42601 improved stack checking under TCL_COMPILE_DEBUG 2013-01-05 03:43:05 +00:00
jan.nijtmans d223d51178 merge fork 2013-01-05 00:39:21 +00:00
mig 7fbeaf9528 fix the new assertion, it should not trigger when an expansion is in progress 2013-01-05 00:36:25 +00:00
jan.nijtmans 2c5cd34ebe adjust stub library version number 2013-01-05 00:36:25 +00:00
mig 9b6ebeae02 Add an assertion that checks the stack depth under TCL_COMPILE_DEBUG *before* stack cleanup. It currently triggers at several spots in the testsuite! 2013-01-05 00:15:19 +00:00
dkf 5bce11a1c8 Fix memory leak in [format] compiler. 2013-01-04 15:01:57 +00:00
dkf 32cc5d8d3c Fix bad memory access problems found by Miguel Sofer when valgrinding. 2013-01-04 14:38:37 +00:00
dkf e2e14fde2d merge trunk 2013-01-04 11:14:59 +00:00
dkf 679963704f Improve code generation for many simple core ensemble subcommands. 2013-01-04 11:14:21 +00:00
dkf 32df42787e Add super-simple compiler to many ensemble subcommands to allow better code
generation where we can detect that we're not in the WrongNumArgs case.
The compiler just checks that the argument count is in the right range and
issues a standard dispatch; that's enough to do an efficient job.
2013-01-04 11:06:14 +00:00
mig 0cf062c388 Insure that PURIFY builds cannot exploit the Tcl stack to hide mem defects. 2013-01-04 05:26:40 +00:00
dkf 207412c303 "Mine eyes deceive, but others catch me when I fall." -- Someone or other 2013-01-03 14:35:07 +00:00
dkf bf368d9079 Channel buffer min size is 1. Issue found by Schelte Bron. 2013-01-03 14:24:48 +00:00
dgp 45c7f36909 speling ficks 2013-01-03 14:02:21 +00:00
dkf 240695b9f5 merge trunk 2013-01-03 10:25:23 +00:00
dkf 3aba154e26 Added mechanism for pre-parsing built-in ensembles even when they are not going
to generate specific code. This provides a good speedup in some cases.
2013-01-03 10:23:01 +00:00
jan.nijtmans 1bef171761 test case for bug-3598580: Tcl_ListObjReplace may release deleted elements too early 2013-01-03 09:46:57 +00:00
dkf 3ce1c8d98b Got the test suite passing cleanly. Excellent. 2013-01-03 00:37:29 +00:00
mig ef5aee8d47 no changes, sync with core-8-5-branch to signal the backported fix 2013-01-02 19:28:57 +00:00
mig 8d4878fee6 remove stray calls to Tcl_Alloc and friends: the core should only use ckalloc to allow MEM_DEBUG to work properly 2013-01-02 19:20:54 +00:00
dkf b0465ff0e8 merge trunk 2013-01-02 18:35:39 +00:00
dkf f9651e0da6 All tests pass except one; not sure what's wrong there. 2013-01-02 18:33:27 +00:00
dkf 18ab8f43a0 Passing more tests. 2013-01-02 15:10:00 +00:00
jan.nijtmans 77014e3f62 test Tcl_GetErrorLine() forwards/backwards compatibility in pkgb.so as well.
Don't free ctrl.script if thread creation fails: it is a constant string "testthread wait" normally.
2013-01-02 14:37:23 +00:00
dkf c0845253a0 Marked some string subcommands as obsolete, following discussion on tcl-core. 2012-12-31 12:32:13 +00:00
dkf 38ba6bd5d4 Working towards more efficient treatment of non-bytecoded ensemble subcommands. 2012-12-31 02:39:40 +00:00
jan.nijtmans 0c64074372 restore refcounts as they were before the Tcl_ListObjReplace call, in the error situation.
In Tcl9, make this a true Tcl_DecrRefCount, which properly cleans objects with refCount 0
2012-12-29 09:23:24 +00:00
jan.nijtmans d12ee9da30 [Bug 3598580]: Tcl_ListObjReplace may release deleted elements too early 2012-12-27 15:04:11 +00:00
jan.nijtmans 65013d771a eliminate dependancy of compat/*.h on tcl.h 2012-12-26 09:59:44 +00:00
dkf 74cca07e35 merge trunk 2012-12-23 08:18:10 +00:00
dkf e2e451e2e5 Change back to using an isDigit function. We simply don't need to make any
(formally non-portable) assumptions about what happens when an unsigned zero
is decremented, and the code isn't in a performance-critical area.

Remark by jan.nijtmans: The macro is perfectly portable! Not portable is the
exact result of the substraction ('\xB0' - '0' might give 0x80 on some platforms and 0xffffff80 on others), but comparing <= 9 always gives the correct result. We are only checking for digits here! The macro correctly inlines with any compiler, so it's better anyway.

Remark by dkf: But it's less clear. In this code, that's more important than a teeny bit of speed from inlining in a non-critical location.
2012-12-23 08:17:17 +00:00
ferrieux ed156a09fa Stop leaking allocated space when objifying a zero-length DString. [Bug 3598150] spotted by afredd. 2012-12-22 19:05:34 +00:00
dkf 8f40b2b313 merge release 2012-12-22 15:21:56 +00:00
jan.nijtmans 21bd9cf5ad Inline compat Tcl_GetDefaultEncodingDir.
Eliminate unnecessary static HasStubSupport() and isDigit() functions, just do the same inline.
2012-12-21 09:13:31 +00:00
dgp f3a3f7b9e8 merge release 2012-12-21 06:16:00 +00:00
dkf a2afb09b3c Improved the sequence of instructions issued for [subst] when dealing with
simple variable references.
2012-12-18 14:02:43 +00:00
dkf 81a67b9cf4 Better version that can handle simple composite array keys as well. As long as
they are free of command substitutions, we can still safely omit the exception
processor code.
2012-12-18 10:21:34 +00:00
dkf 569360bf40 Generate better code for the common case of subst-ed variables where the
variable is a simple scalar or an array with a simple literal element name.
2012-12-18 09:37:42 +00:00
dkf 59e42de547 merge trunk 2012-12-18 09:02:38 +00:00
dkf fa7a06447d Simpler code to do installation of [info class] and [info object].
We know this is a safe thing to do as we know this is inside Tcl_CreateInterp()
and so no confounding code could have been run.
2012-12-17 14:40:17 +00:00
dkf b13b1c6020 Slim down the code a bit more; we can make more safe assumptions. 2012-12-17 14:27:44 +00:00
dgp d67ebaffd4 merge trunk, update changes and re-tag 2012-12-14 19:25:04 +00:00
dgp 8890130ab8 TIP 400 suffered from the same segfaulting flaw as 3595576.
Segfaulting test and fix committed.
2012-12-13 20:20:46 +00:00
dgp 093fb49d43 Simplify the [info object] and [info class] additions. 2012-12-13 19:43:43 +00:00
dgp 0ccb6618bd Restore clarity to macro test. 2012-12-13 16:17:13 +00:00
dgp af92fc0c28 Merge 3595576 tests from 8.5. 2012-12-13 16:08:13 +00:00
mig 1d29f93257 Fix for [Bug 3595576], found by andrewsh 2012-12-13 13:37:19 +00:00
jan.nijtmans 9918a06afa Changelog entry, and change macro variable to not conflict with possible outside variable names 2012-12-13 12:14:37 +00:00
jan.nijtmans eace9319cb Fix Tcl_DecrRefCount macro, not to refer to its objPtr parameter twice. 2012-12-13 11:02:15 +00:00
dgp 6428006e92 Prefer to extract package data from the *contents* not the directory name. 2012-12-12 20:16:13 +00:00
dgp 78a3c34ca2 Tag 8.6.0 for release 2012-12-11 21:31:18 +00:00
dgp c13ee047c8 update changes 2012-12-11 21:19:11 +00:00
dkf c1784e6b4c Improve the generation of HTML documentation in 8.6, allowing for contributed
packages whose non-version name parts are prefixes of others. Also ensure that
documentation builds are complete after distribution, and that we generate a
better error message when using the wrong tclsh version to do the build.
2012-12-10 23:23:50 +00:00
dgp 498562a0e5 merge trunk 2012-12-10 15:58:23 +00:00
dgp 15f02f424c Restore the initialization of tclStubsPtr from the "Tcl" package clientData
so that we don't close off a potential avenue of future innovations.
2012-12-10 14:17:19 +00:00
ferrieux 2fd9e3776b [Bug 3594188] Clarifications about commas. 2012-12-09 19:44:57 +00:00
ferrieux 16df5aebc9 Clean up unwanted eofchar side-effect of chan-4.6 leading to a spurious "'" at end of chan.test under certain conditions (see [Bug 3389289] and [Bug 3389251]). 2012-12-09 11:52:04 +00:00
ferrieux 8a282bbf9e Fix busyloop at exit under TCL_FINALIZE_ON_EXIT when there are unflushed nonblocking channels. Thanks Miguel for spotting. 2012-12-08 17:13:03 +00:00
jan.nijtmans 5e55e0d280 just lost one MODULE_SCOPE in the merge 2012-12-07 22:14:26 +00:00
jan.nijtmans bd8d73a7d5 only set tclStubsPtr if all version checks pass 2012-12-07 21:36:34 +00:00
dgp aa34213e75 merge trunk 2012-12-07 19:26:49 +00:00
dgp b54c784f20 3593703 Don't crash on bad input to Tcl_PkgRequire*(). 2012-12-07 18:08:48 +00:00
dgp c46c79caa2 Source compat, rather than stubs compat demo. 2012-12-07 17:03:39 +00:00
mig 2adea0d04e small correction in doc/NRE.3 2012-12-07 15:56:13 +00:00
jan.nijtmans 7720b5d9df fix failing test 2012-12-07 15:53:29 +00:00
jan.nijtmans f894c98ebc add proper runtime-detection to pkgb.so 2012-12-07 15:51:25 +00:00
dgp 1aa7610988 Extended test of [load]ing Tcl 8 compiled extension into Tcl 9 interp. 2012-12-07 14:53:40 +00:00
jan.nijtmans 02929519ba Turn pkgb.so into a Tcl9 interoperability test
library: Whatever Tcl9 looks like, loading pkgb.so in Tcl 9 should
either result in an error-message, either succeed, but never crash.
2012-12-07 09:56:39 +00:00
dgp 22f216f372 Tcl_InitStubs("8.5",1) would succeed in an "8.50" interp. Fixed. 2012-12-06 21:10:19 +00:00
dgp 5240308ed2 merge trunk 2012-12-04 20:40:50 +00:00
dgp fcf174f284 merge trunk 2012-11-26 15:28:12 +00:00
dgp 52e06a03d8 merge trunk 2012-11-22 17:27:03 +00:00
dkf 6e2667d4d2 merge trunk 2012-11-19 22:10:10 +00:00
dgp b670d49ae2 merge trunk 2012-11-19 17:30:33 +00:00
dgp 91d791cd85 merge trunk 2012-11-16 12:52:39 +00:00
dgp 275cdefdd7 merge trunk: 2012-11-15 01:54:58 +00:00
dgp f14b389544 merge trunk 2012-11-14 16:57:23 +00:00
dgp b8076815be merge trunk 2012-11-13 21:31:30 +00:00
dgp 6734623337 merge trunk 2012-11-08 15:44:09 +00:00
dgp ea58b7b66f Declare TclOO portion of the Tcl API to be stable -> TclOO 1.0 2012-11-08 15:43:45 +00:00
dgp 7635c56e5d Create Tcl 8.6.0 release branch 2012-11-08 15:25:30 +00:00
dkf ec58b631ce merge trunk: INST_TAILCALL has bug 2012-11-05 21:47:12 +00:00
dkf 49dd27a4ea merge trunk 2012-11-05 15:17:26 +00:00
289 changed files with 10686 additions and 10159 deletions
+619 -7900
View File
File diff suppressed because it is too large Load Diff
+5921
View File
File diff suppressed because it is too large Load Diff
+1529
View File
File diff suppressed because it is too large Load Diff
+15 -16
View File
@@ -1,8 +1,7 @@
README: Tcl
This is the Tcl 8.5.14 source distribution.
http://tcl.sourceforge.net/
You can get any source release of Tcl from the file distributions
link at the above URL.
This is the Tcl 8.5.15 source distribution.
http://sourceforge.net/projects/tcl/files/Tcl/
You can get any source release of Tcl from the URL above.
Contents
--------
@@ -27,9 +26,14 @@ Tcl can also be used for a variety of web-related tasks and for creating
powerful command languages for applications.
Tcl is maintained, enhanced, and distributed freely by the Tcl community.
The home for Tcl/Tk releases and bug/patch database is on SourceForge:
Source code development and tracking of bug reports and feature requests
takes place at:
http://tcl.sourceforge.net/
http://core.tcl.tk/
Tcl/Tk release and mailing list services are hosted by SourceForge:
http://sourceforge.net/projects/tcl/
with the Tcl Developer Xchange hosted at:
@@ -49,7 +53,7 @@ The home page for this release, including new features, is
Detailed release notes can be found at the file distributions page
by clicking on the relevant version.
http://sourceforge.net/projects/tcl/files/
http://sourceforge.net/projects/tcl/files/Tcl/
Information about Tcl itself can be found at
http://www.tcl.tk/about/
@@ -146,18 +150,13 @@ and go to the Mailing Lists page.
------------------------
We are very interested in receiving bug reports, patches, and suggestions
for improvements. We prefer that you send this information to us via the
bug form at SourceForge, rather than emailing us directly. The bug
database is at:
for improvements. We prefer that you send this information to us as
tickets entered into our tracker at:
http://tcl.sourceforge.net/
The bug form was designed to give uniform structure to bug reports as
well as to solicit enough information to minimize followup questions.
http://core.tcl.tk/tcl/reportlist
We will log and follow-up on each bug, although we cannot promise a
specific turn-around time. Enhancements, reported via the Feature
Requests form at the same web site, may take longer and may not happen
specific turn-around time. Enhancements may take longer and may not happen
at all unless there is widespread support for them (we're trying to
slow the rate at which Tcl/Tk turns into a kitchen sink). It's very
difficult to make incompatible changes to Tcl/Tk at this point, due to
+57
View File
@@ -7734,3 +7734,60 @@ Many revisions to better support a Cygwin environment (nijtmans)
2013-03-22 tzdata updated to Olson's tzdata2013b (venkat)
--- Released 8.5.14, April 3, 2013 --- See ChangeLog for details ---
2013-04-03 (bug fix)[3205320] outsmart gcc on powerpc detect stack direction
2013-04-04 (bug fix) Support URLs with query but no path (max)
=> http 2.7.12
2013-04-08 (bug fix)[3610026] regexp crash on color overflow (linnakangas)
2013-04-16 (bug fix)[3610404] crash in enter traces (found with TclOO) (porter)
2013-04-30 (enhancement) broaden glibc version detection (kupries)
=> platform 1.0.12
2013-05-01 (bug fix)[2901998] inconsistent I/O buffering (ferrieux)
2013-05-06 (platform support) Cygwin64 (nijtmans)
2013-05-16 (platform support) mingw-4.0 (nijtmans)
2013-05-19 (platform support) FreeBSD updates (cerutti)
2013-05-22 (bug fix)[3613609] [lsort -nocase] failed on non-ASCII (fellows)
2013-05-28 (bug fix)[3036566] Use language packs (Vista+) locale (oehlmann)
=> msgcat 1.5.2
2013-06-03 Restored lost performance appending to long strings (elby,porter)
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
+14 -2
View File
@@ -9,7 +9,7 @@
.TH Threads 3 "8.1" Tcl "Tcl Library Procedures"
.BS
.SH NAME
Tcl_ConditionNotify, Tcl_ConditionWait, Tcl_ConditionFinalize, Tcl_GetThreadData, Tcl_MutexLock, Tcl_MutexUnlock, Tcl_MutexFinalize, Tcl_CreateThread, Tcl_JoinThread \- Tcl thread support
Tcl_ConditionNotify, Tcl_ConditionWait, Tcl_ConditionFinalize, Tcl_GetThreadData, Tcl_UnsetThreadData, Tcl_MutexLock, Tcl_MutexUnlock, Tcl_MutexFinalize, Tcl_CreateThread, Tcl_JoinThread \- Tcl thread support
.SH SYNOPSIS
.nf
\fB#include <tcl.h>\fR
@@ -27,6 +27,9 @@ Void *
\fBTcl_GetThreadData\fR(\fIkeyPtr, size\fR)
.sp
void
\fBTcl_UnsetThreadData\fR(\fIkeyPtr, size, all\fR)
.sp
void
\fBTcl_MutexLock\fR(\fImutexPtr\fR)
.sp
void
@@ -53,10 +56,13 @@ Note that a polling value of 0 seconds does not make much sense.
This identifies a block of thread local storage. The key should be
static and process-wide, yet each thread will end up associating
a different block of storage with this key.
.AP int *size in
.AP int size in
The size of the thread local storage block. This amount of data
is allocated and initialized to zero the first time each thread
calls \fBTcl_GetThreadData\fR.
.AP int all in
Non-zero if the thread local storage block is to be unset for all
threads.
.AP Tcl_ThreadId *idPtr out
The referred storage will contain the id of the newly created thread as
returned by the operating system.
@@ -129,6 +135,12 @@ thread-private data. Its argument is a key that is shared by all threads
and a size for the block of storage. The storage is automatically
allocated and initialized to all zeros the first time each thread asks for it.
The storage is automatically deallocated by \fBTcl_FinalizeThread\fR.
.PP
The \fBTcl_UnsetThreadData\fR function is used to manually destroy
and remove the block of thread local storage. Normally, calling this
function is not necessary. However, if an individual thread local
storage block needs to be manually removed, this function provides a
means to do it.
.SS "SYNCHRONIZATION AND COMMUNICATION"
Tcl provides \fBTcl_ThreadQueueEvent\fR and \fBTcl_ThreadAlert\fR
for handling event queuing in multithreaded applications. See
+4 -3
View File
@@ -35,7 +35,7 @@ msgcat \- Tcl message catalog
\fB::msgcat::mcflmset \fIsrc-trans-list\fR
.VE "TIP 404"
.sp
\fB::msgcat::mcunknown \fIlocale src-string\fR
\fB::msgcat::mcunknown \fIlocale src-string\fR ?\fIarg arg ...\fR?
.BE
.SH DESCRIPTION
.PP
@@ -157,12 +157,13 @@ translate-string\fR ?\fIsrc-string translate-string ...\fR?}
of \fB::msgcat::mcflset\fR. The function returns the number of translations set.
.VE "TIP 404"
.TP
\fB::msgcat::mcunknown \fIlocale src-string\fR
\fB::msgcat::mcunknown \fIlocale src-string\fR ?\fIarg arg ...\fR?
.
This routine is called by \fB::msgcat::mc\fR in the case when
a translation for \fIsrc-string\fR is not defined in the
current locale. The default action is to return
\fIsrc-string\fR. This procedure can be redefined by the
\fIsrc-string\fR passed by format if there are any arguments. This
procedure can be redefined by the
application, for example to log error messages for each unknown
string. The \fB::msgcat::mcunknown\fR procedure is invoked at the
same stack context as the call to \fB::msgcat::mc\fR. The return value
+2 -2
View File
@@ -96,7 +96,7 @@ The input substring must be an octal integer. It is read in and the
integer value is stored in the variable,
truncated as required by the size modifier value.
.TP 10
\fBx\fR
\fBx\fR or \fBX\fR
The input substring must be a hexadecimal integer.
It is read in and the integer value is stored in the variable,
truncated as required by the size modifier value.
@@ -126,7 +126,7 @@ substring may be a white-space character.
The input substring consists of all the characters up to the next
white-space character; the characters are copied to the variable.
.TP 10
\fBe\fR or \fBf\fR or \fBg\fR
\fBe\fR or \fBf\fR or \fBg\fR or \fBE\fR or \fBG\fR
The input substring must be a floating-point number consisting
of an optional sign, a string of decimal digits possibly
containing a decimal point, and an optional exponent consisting
+7
View File
@@ -254,7 +254,14 @@ newcolor(
* Oops, must allocate more.
*/
if (cm->max == MAX_COLOR) {
CERR(REG_ECOLORS);
return COLORLESS; /* too many colors */
}
n = cm->ncds * 2;
if (n < MAX_COLOR + 1) {
n = MAX_COLOR + 1;
}
if (cm->cd == cm->cdspace) {
newCd = (struct colordesc *) MALLOC(n * sizeof(struct colordesc));
if (newCd != NULL) {
+14 -11
View File
@@ -118,7 +118,7 @@ static const struct cname {
* Unicode character-class tables.
*/
typedef struct crange {
typedef struct {
chr start;
chr end;
} crange;
@@ -259,8 +259,9 @@ static const chr alphaCharTable[] = {
*/
static const crange controlRangeTable[] = {
{0x7f, 0x9f}, {0x600, 0x604}, {0x200b, 0x200f}, {0x202a, 0x202e},
{0x2060, 0x2064}, {0x206a, 0x206f}, {0xe000, 0xf8ff}, {0xfff9, 0xfffb}
{0x0, 0x1f}, {0x7f, 0x9f}, {0x600, 0x604}, {0x200b, 0x200f},
{0x202a, 0x202e}, {0x2060, 0x2064}, {0x2066, 0x206f}, {0xe000, 0xf8ff},
{0xfff9, 0xfffb}
#if TCL_UTF_MAX > 4
,{0x1d173, 0x1d17a}, {0xe0020, 0xe007f}, {0xf0000, 0xffffd}, {0x100000, 0x10fffd}
#endif
@@ -269,7 +270,7 @@ static const crange controlRangeTable[] = {
#define NUM_CONTROL_RANGE (sizeof(controlRangeTable)/sizeof(crange))
static const chr controlCharTable[] = {
0xad, 0x6dd, 0x70f, 0xfeff
0xad, 0x61c, 0x6dd, 0x70f, 0x180e, 0xfeff
#if TCL_UTF_MAX > 4
,0x110bd, 0xe0001
#endif
@@ -315,12 +316,13 @@ static const crange punctRangeTable[] = {
{0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1aa0, 0x1aa6}, {0x1aa8, 0x1aad},
{0x1b5a, 0x1b60}, {0x1bfc, 0x1bff}, {0x1c3b, 0x1c3f}, {0x1cc0, 0x1cc7},
{0x2010, 0x2027}, {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x205e},
{0x2768, 0x2775}, {0x27e6, 0x27ef}, {0x2983, 0x2998}, {0x29d8, 0x29db},
{0x2cf9, 0x2cfc}, {0x2e00, 0x2e2e}, {0x2e30, 0x2e3b}, {0x3001, 0x3003},
{0x3008, 0x3011}, {0x3014, 0x301f}, {0xa60d, 0xa60f}, {0xa6f2, 0xa6f7},
{0xa874, 0xa877}, {0xa8f8, 0xa8fa}, {0xa9c1, 0xa9cd}, {0xaa5c, 0xaa5f},
{0xfe10, 0xfe19}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xff01, 0xff03},
{0xff05, 0xff0a}, {0xff0c, 0xff0f}, {0xff3b, 0xff3d}, {0xff5f, 0xff65}
{0x2308, 0x230b}, {0x2768, 0x2775}, {0x27e6, 0x27ef}, {0x2983, 0x2998},
{0x29d8, 0x29db}, {0x2cf9, 0x2cfc}, {0x2e00, 0x2e2e}, {0x2e30, 0x2e3b},
{0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, {0xa60d, 0xa60f},
{0xa6f2, 0xa6f7}, {0xa874, 0xa877}, {0xa8f8, 0xa8fa}, {0xa9c1, 0xa9cd},
{0xaa5c, 0xaa5f}, {0xfe10, 0xfe19}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61},
{0xff01, 0xff03}, {0xff05, 0xff0a}, {0xff0c, 0xff0f}, {0xff3b, 0xff3d},
{0xff5f, 0xff65}
#if TCL_UTF_MAX > 4
,{0x10100, 0x10102}, {0x10a50, 0x10a58}, {0x10b39, 0x10b3f}, {0x11047, 0x1104d},
{0x110be, 0x110c1}, {0x11140, 0x11143}, {0x111c5, 0x111c8}, {0x12470, 0x12473}
@@ -360,7 +362,8 @@ static const crange spaceRangeTable[] = {
#define NUM_SPACE_RANGE (sizeof(spaceRangeTable)/sizeof(crange))
static const chr spaceCharTable[] = {
0x20, 0xa0, 0x1680, 0x180e, 0x2028, 0x2029, 0x202f, 0x205f, 0x3000
0x20, 0xa0, 0x1680, 0x180e, 0x2028, 0x2029, 0x202f, 0x205f, 0x2060,
0x3000, 0xfeff
};
#define NUM_SPACE_CHAR (sizeof(spaceCharTable)/sizeof(chr))
+1
View File
@@ -17,3 +17,4 @@
{ REG_MIXED, "REG_MIXED", "character widths of regex and string differ" },
{ REG_BADOPT, "REG_BADOPT", "invalid embedded option" },
{ REG_ETOOBIG, "REG_ETOOBIG", "nfa has too many states" },
{ REG_ECOLORS, "REG_ECOLORS", "too many colors" },
+1
View File
@@ -278,6 +278,7 @@ typedef struct {
#define REG_MIXED 17 /* character widths of regex and string differ */
#define REG_BADOPT 18 /* invalid embedded option */
#define REG_ETOOBIG 19 /* nfa has too many states */
#define REG_ECOLORS 20 /* too many colors */
/* two specials for debugging and testing */
#define REG_ATOI 101 /* convert error-code name to number */
#define REG_ITOA 102 /* convert error-code number to name */
+1 -6
View File
@@ -512,12 +512,7 @@ cfindloop(
return er;
}
if ((shorter) ? end == estop : end == begin) {
/*
* No point in trying again.
*/
*coldp = cold;
return REG_NOMATCH;
break;
}
/*
+4 -3
View File
@@ -162,6 +162,7 @@
typedef short color; /* colors of characters */
typedef int pcolor; /* what color promotes to */
#define MAX_COLOR SHRT_MAX /* max color value */
#define COLORLESS (-1) /* impossible color */
#define WHITE 0 /* default color, parent of all others */
@@ -357,12 +358,12 @@ struct subre {
#define CAP 010 /* capturing parens below */
#define BACKR 020 /* back reference below */
#define INUSE 0100 /* in use in final tree */
#define LOCAL 03 /* bits which may not propagate up */
#define NOPROP 03 /* bits which may not propagate up */
#define LMIX(f) ((f)<<2) /* LONGER -> MIXED */
#define SMIX(f) ((f)<<1) /* SHORTER -> MIXED */
#define UP(f) (((f)&~LOCAL) | (LMIX(f) & SMIX(f) & MIXED))
#define UP(f) (((f)&~NOPROP) | (LMIX(f) & SMIX(f) & MIXED))
#define MESSY(f) ((f)&(MIXED|CAP|BACKR))
#define PREF(f) ((f)&LOCAL)
#define PREF(f) ((f)&NOPROP)
#define PREF2(f1, f2) ((PREF(f1) != 0) ? PREF(f1) : PREF(f2))
#define COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2))
short retry; /* index into retry memory */
+3
View File
@@ -2108,6 +2108,9 @@ declare 578 {
declare 579 {
void Tcl_AppendPrintfToObj(Tcl_Obj *objPtr, const char *format, ...)
}
declare 580 {
void Tcl_UnsetThreadData(Tcl_ThreadDataKey *keyPtr, int size, int all)
}
declare 630 {
void TclUnusedStubEntry(void)
}
+8 -6
View File
@@ -58,10 +58,10 @@ extern "C" {
#define TCL_MAJOR_VERSION 8
#define TCL_MINOR_VERSION 5
#define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE
#define TCL_RELEASE_SERIAL 14
#define TCL_RELEASE_SERIAL 15
#define TCL_VERSION "8.5"
#define TCL_PATCH_LEVEL "8.5.14"
#define TCL_PATCH_LEVEL "8.5.15"
/*
* The following definitions set up the proper options for Windows compilers.
@@ -293,10 +293,12 @@ typedef long LONG;
* in ANSI C; maps them to type "char *" in non-ANSI systems.
*/
#ifndef NO_VOID
#define VOID void
#else
#define VOID char
#ifndef __VXWORKS__
# ifndef NO_VOID
# define VOID void
# else
# define VOID char
# endif
#endif
/*
+30 -15
View File
@@ -410,6 +410,18 @@ Tcl_CreateInterp(void)
Tcl_Panic("Tcl_CallFrame must not be smaller than CallFrame");
}
#if defined(_WIN32) && !defined(_WIN64)
if (sizeof(time_t) != 4) {
/*NOTREACHED*/
Tcl_Panic("<time.h> is not compatible with MSVC");
}
if ((TclOffset(Tcl_StatBuf,st_atime) != 32)
|| (TclOffset(Tcl_StatBuf,st_ctime) != 40)) {
/*NOTREACHED*/
Tcl_Panic("<sys/stat.h> is not compatible with MSVC");
}
#endif
/*
* Initialize support for namespaces and create the global namespace
* (whose name is ""; an alias is "::"). This also initializes the Tcl
@@ -1954,12 +1966,9 @@ Tcl_CreateCommand(
* future calls to Tcl_GetCommandName.
*
* Side effects:
* If no command named "cmdName" already exists for interp, one is
* created. Otherwise, if a command does exist, then if the object-based
* Tcl_ObjCmdProc is TclInvokeStringCommand, we assume Tcl_CreateCommand
* was called previously for the same command and just set its
* Tcl_ObjCmdProc to the argument "proc"; otherwise, we delete the old
* command.
* 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
@@ -2026,17 +2035,22 @@ Tcl_CreateObjCommand(
if (!isNew) {
cmdPtr = Tcl_GetHashValue(hPtr);
/* Command already exists. */
/*
* Command already exists. If its object-based Tcl_ObjCmdProc is
* TclInvokeStringCommand, we just set its Tcl_ObjCmdProc to the
* argument "proc". Otherwise, we delete the old command.
* [***] 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) {
if (cmdPtr->objProc == TclInvokeStringCommand
&& cmdPtr->clientData == clientData
&& cmdPtr->deleteData == clientData
&& cmdPtr->deleteProc == deleteProc) {
cmdPtr->objProc = proc;
cmdPtr->objClientData = clientData;
cmdPtr->deleteProc = deleteProc;
cmdPtr->deleteData = clientData;
return (Tcl_Command) cmdPtr;
}
@@ -2176,8 +2190,8 @@ TclInvokeStringCommand(
* A standard Tcl string result value.
*
* Side effects:
* Besides those side effects of the called Tcl_CmdProc,
* TclInvokeStringCommand allocates and frees storage.
* Besides those side effects of the called Tcl_ObjCmdProc,
* TclInvokeObjectCommand allocates and frees storage.
*
*----------------------------------------------------------------------
*/
@@ -3648,10 +3662,11 @@ TclEvalObjvInternal(
* implementation.
*/
if (cmdEpoch != newEpoch) {
if (traceCode == TCL_OK && cmdEpoch != newEpoch) {
checkTraces = 0;
if (commandPtr) {
Tcl_DecrRefCount(commandPtr);
commandPtr = NULL;
}
goto reparseBecauseOfTraces;
}
+3 -4
View File
@@ -130,8 +130,7 @@ Tcl_CaseObjCmd(
for (i = 0; i < caseObjc; i += 2) {
int patObjc, j;
const char **patObjv;
char *pat;
unsigned char *p;
char *pat, *p;
if (i == (caseObjc - 1)) {
Tcl_ResetResult(interp);
@@ -145,8 +144,8 @@ Tcl_CaseObjCmd(
*/
pat = TclGetString(caseObjv[i]);
for (p = (unsigned char *) pat; *p != '\0'; p++) {
if (isspace(*p) || (*p == '\\')) { /* INTL: ISO space, UCHAR */
for (p = pat; *p != '\0'; p++) {
if (TclIsSpaceProc(*p) || (*p == '\\')) {
break;
}
}
+7 -6
View File
@@ -2807,7 +2807,7 @@ Tcl_LsearchObjCmd(
dataType = INTEGER;
break;
case LSEARCH_NOCASE: /* -nocase */
strCmpFn = strcasecmp;
strCmpFn = TclUtfCasecmp;
noCase = 1;
break;
case LSEARCH_NOT: /* -not */
@@ -3209,7 +3209,7 @@ Tcl_LsearchObjCmd(
*/
if (noCase) {
match = (strcasecmp(bytes, patternBytes) == 0);
match = (TclUtfCasecmp(bytes, patternBytes) == 0);
} else {
match = (memcmp(bytes, patternBytes,
(size_t) length) == 0);
@@ -3460,7 +3460,8 @@ Tcl_LsortObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument values. */
{
int i, j, index, indices, length, nocase = 0, sortMode, indexc;
int i, j, index, indices, length, nocase = 0, indexc;
int sortMode = SORTMODE_ASCII;
Tcl_Obj *resultPtr, *cmdPtr, **listObjPtrs, *listObj, *indexPtr;
SortElement *elementArray, *elementPtr;
SortInfo sortInfo; /* Information about this sort that needs to
@@ -3712,7 +3713,7 @@ Tcl_LsortObjCmd(
goto done1;
}
elementArray[i].index.intValue = a;
} else if (sortInfo.sortMode == SORTMODE_REAL) {
} else if (sortMode == SORTMODE_REAL) {
double a;
if (Tcl_GetDoubleFromObj(sortInfo.interp, indexPtr, &a) != TCL_OK) {
sortInfo.resultCode = TCL_ERROR;
@@ -3790,7 +3791,7 @@ Tcl_LsortObjCmd(
ckfree((char *)elementArray);
done:
if (sortInfo.sortMode == SORTMODE_COMMAND) {
if (sortMode == SORTMODE_COMMAND) {
TclDecrRefCount(sortInfo.compareCmdPtr);
TclDecrRefCount(listObj);
sortInfo.compareCmdPtr = NULL;
@@ -3932,7 +3933,7 @@ SortCompare(
order = strcmp(elemPtr1->index.strValuePtr,
elemPtr2->index.strValuePtr);
} else if (infoPtr->sortMode == SORTMODE_ASCII_NC) {
order = strcasecmp(elemPtr1->index.strValuePtr,
order = TclUtfCasecmp(elemPtr1->index.strValuePtr,
elemPtr2->index.strValuePtr);
} else if (infoPtr->sortMode == SORTMODE_DICTIONARY) {
order = DictionaryCompare(elemPtr1->index.strValuePtr,
+1 -1
View File
@@ -3436,7 +3436,7 @@ Tcl_SwitchObjCmd(
i++;
goto finishedOptions;
case OPT_NOCASE:
strCmpFn = strcasecmp;
strCmpFn = TclUtfCasecmp;
noCase = 1;
break;
+44 -36
View File
@@ -683,11 +683,10 @@ TclCompileDictSetCmd(
CompileEnv *envPtr) /* Holds resulting instructions. */
{
Tcl_Token *tokenPtr;
int numWords, i;
Proc *procPtr = envPtr->procPtr;
DefineLineInformation; /* TIP #280 */
Tcl_Token *varTokenPtr;
int dictVarIndex, nameChars;
int i, dictVarIndex, nameChars;
const char *name;
/*
@@ -720,8 +719,7 @@ TclCompileDictSetCmd(
*/
tokenPtr = TokenAfter(varTokenPtr);
numWords = parsePtr->numWords-1;
for (i=1 ; i<numWords ; i++) {
for (i=2 ; i< parsePtr->numWords ; i++) {
CompileWord(envPtr, tokenPtr, interp, i);
tokenPtr = TokenAfter(tokenPtr);
}
@@ -730,7 +728,7 @@ TclCompileDictSetCmd(
* Now emit the instruction to do the dict manipulation.
*/
TclEmitInstInt4( INST_DICT_SET, numWords-2, envPtr);
TclEmitInstInt4( INST_DICT_SET, parsePtr->numWords-3, envPtr);
TclEmitInt4( dictVarIndex, envPtr);
return TCL_OK;
}
@@ -808,7 +806,7 @@ TclCompileDictIncrCmd(
* Emit the key and the code to actually do the increment.
*/
CompileWord(envPtr, keyTokenPtr, interp, 3);
CompileWord(envPtr, keyTokenPtr, interp, 2);
TclEmitInstInt4( INST_DICT_INCR_IMM, incrAmount, envPtr);
TclEmitInt4( dictVarIndex, envPtr);
return TCL_OK;
@@ -824,7 +822,7 @@ TclCompileDictGetCmd(
CompileEnv *envPtr) /* Holds resulting instructions. */
{
Tcl_Token *tokenPtr;
int numWords, i;
int i;
DefineLineInformation; /* TIP #280 */
/*
@@ -836,17 +834,16 @@ TclCompileDictGetCmd(
return TCL_ERROR;
}
tokenPtr = TokenAfter(parsePtr->tokenPtr);
numWords = parsePtr->numWords-1;
/*
* Only compile this because we need INST_DICT_GET anyway.
*/
for (i=0 ; i<numWords ; i++) {
for (i=1 ; i<parsePtr->numWords ; i++) {
CompileWord(envPtr, tokenPtr, interp, i);
tokenPtr = TokenAfter(tokenPtr);
}
TclEmitInstInt4(INST_DICT_GET, numWords-1, envPtr);
TclEmitInstInt4(INST_DICT_GET, parsePtr->numWords-2, envPtr);
return TCL_OK;
}
@@ -937,7 +934,7 @@ TclCompileDictForCmd(
* errors at this point.
*/
CompileWord(envPtr, dictTokenPtr, interp, 3);
CompileWord(envPtr, dictTokenPtr, interp, 2);
TclEmitInstInt4( INST_DICT_FIRST, infoIndex, envPtr);
emptyTargetOffset = CurrentOffset(envPtr);
TclEmitInstInt4( INST_JUMP_TRUE4, 0, envPtr);
@@ -1162,7 +1159,7 @@ TclCompileDictUpdateCmd(
infoIndex = TclCreateAuxData(duiPtr, &tclDictUpdateInfoType, envPtr);
for (i=0 ; i<numVars ; i++) {
CompileWord(envPtr, keyTokenPtrs[i], interp, i);
CompileWord(envPtr, keyTokenPtrs[i], interp, 2*i+2);
}
TclEmitInstInt4( INST_LIST, numVars, envPtr);
TclEmitInstInt4( INST_DICT_UPDATE_START, dictIndex, envPtr);
@@ -1313,8 +1310,8 @@ TclCompileDictLappendCmd(
return TCL_ERROR;
}
dictVarIndex = TclFindCompiledLocal(name, nameChars, 1, procPtr);
CompileWord(envPtr, keyTokenPtr, interp, 3);
CompileWord(envPtr, valueTokenPtr, interp, 4);
CompileWord(envPtr, keyTokenPtr, interp, 2);
CompileWord(envPtr, valueTokenPtr, interp, 3);
TclEmitInstInt4( INST_DICT_LAPPEND, dictVarIndex, envPtr);
return TCL_OK;
}
@@ -1628,7 +1625,7 @@ TclCompileForeachCmd(
Tcl_Token *tokenPtr, *bodyTokenPtr;
unsigned char *jumpPc;
JumpFixup jumpFalseFixup;
int jumpBackDist, jumpBackOffset, infoIndex, range, bodyIndex;
int jumpBackDist, jumpBackOffset, infoIndex, range;
int numWords, numLists, numVars, loopIndex, tempVar, i, j, code;
int savedStackDepth = envPtr->currStackDepth;
DefineLineInformation; /* TIP #280 */
@@ -1669,8 +1666,6 @@ TclCompileForeachCmd(
return TCL_ERROR;
}
bodyIndex = i-1;
/*
* Allocate storage for the varcList and varvList arrays if necessary.
*/
@@ -1837,7 +1832,7 @@ TclCompileForeachCmd(
* Inline compile the loop body.
*/
SetLineInformation (bodyIndex);
SetLineInformation (numWords - 1);
ExceptionRangeStarts(envPtr, range);
CompileBody(envPtr, bodyTokenPtr, interp);
ExceptionRangeEnds(envPtr, range);
@@ -5786,16 +5781,14 @@ TclCompileUpvarCmd(
Tcl_Token *tokenPtr, *otherTokenPtr, *localTokenPtr;
int simpleVarName, isScalar, localIndex, numWords, i;
DefineLineInformation; /* TIP #280 */
Tcl_Obj *objPtr = Tcl_NewObj();
Tcl_Obj *objPtr;
if (envPtr->procPtr == NULL) {
Tcl_DecrRefCount(objPtr);
return TCL_ERROR;
}
numWords = parsePtr->numWords;
if (numWords < 3) {
Tcl_DecrRefCount(objPtr);
return TCL_ERROR;
}
@@ -5803,6 +5796,7 @@ TclCompileUpvarCmd(
* Push the frame index if it is known at compile time
*/
objPtr = Tcl_NewObj();
tokenPtr = TokenAfter(parsePtr->tokenPtr);
if(TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
CallFrame *framePtr;
@@ -5821,16 +5815,17 @@ TclCompileUpvarCmd(
if(numWords%2) {
return TCL_ERROR;
}
/* TODO: Push the known value instead? */
CompileWord(envPtr, tokenPtr, interp, 1);
otherTokenPtr = TokenAfter(tokenPtr);
i = 4;
i = 2;
} else {
if(!(numWords%2)) {
return TCL_ERROR;
}
PushLiteral(envPtr, "1", 1);
otherTokenPtr = tokenPtr;
i = 3;
i = 1;
}
} else {
Tcl_DecrRefCount(objPtr);
@@ -5843,12 +5838,12 @@ TclCompileUpvarCmd(
* be called at runtime.
*/
for(; i<=numWords; i+=2, otherTokenPtr = TokenAfter(localTokenPtr)) {
for(; i<numWords; i+=2, otherTokenPtr = TokenAfter(localTokenPtr)) {
localTokenPtr = TokenAfter(otherTokenPtr);
CompileWord(envPtr, otherTokenPtr, interp, 1);
CompileWord(envPtr, otherTokenPtr, interp, i);
PushVarNameWord(interp, localTokenPtr, envPtr, TCL_CREATE_VAR,
&localIndex, &simpleVarName, &isScalar, 1);
&localIndex, &simpleVarName, &isScalar, i+1);
if((localIndex < 0) || !isScalar) {
return TCL_ERROR;
@@ -5925,7 +5920,7 @@ TclCompileNamespaceCmd(
*/
tokenPtr = TokenAfter(tokenPtr);
CompileWord(envPtr, tokenPtr, interp, 1);
CompileWord(envPtr, tokenPtr, interp, 2);
/*
* Loop over the (otherVar, thisVar) pairs. If any of the thisVar is not a
@@ -5934,13 +5929,13 @@ TclCompileNamespaceCmd(
*/
localTokenPtr = tokenPtr;
for(i=4; i<=numWords; i+=2) {
for(i=3; i<numWords; i+=2) {
otherTokenPtr = TokenAfter(localTokenPtr);
localTokenPtr = TokenAfter(otherTokenPtr);
CompileWord(envPtr, otherTokenPtr, interp, 1);
CompileWord(envPtr, otherTokenPtr, interp, i);
PushVarNameWord(interp, localTokenPtr, envPtr, TCL_CREATE_VAR,
&localIndex, &simpleVarName, &isScalar, 1);
&localIndex, &simpleVarName, &isScalar, i+1);
if((localIndex < 0) || !isScalar) {
return TCL_ERROR;
@@ -6012,14 +6007,17 @@ TclCompileGlobalCmd(
*/
varTokenPtr = TokenAfter(parsePtr->tokenPtr);
for(i=2; i<=numWords; varTokenPtr = TokenAfter(varTokenPtr),i++) {
for(i=1; i<numWords; varTokenPtr = TokenAfter(varTokenPtr),i++) {
localIndex = IndexTailVarIfKnown(interp, varTokenPtr, envPtr);
if(localIndex < 0) {
return TCL_ERROR;
}
CompileWord(envPtr, varTokenPtr, interp, 1);
/* TODO: Consider what values can pass through the
* IndexTailVarIfKnown() screen. Full CompileWord()
* likely does not apply here. Push known value instead. */
CompileWord(envPtr, varTokenPtr, interp, i);
TclEmitInstInt4(INST_NSUPVAR, localIndex, envPtr);
}
@@ -6081,7 +6079,7 @@ TclCompileVariableCmd(
*/
valueTokenPtr = parsePtr->tokenPtr;
for(i=2; i<=numWords; i+=2) {
for(i=1; i<numWords; i+=2) {
varTokenPtr = TokenAfter(valueTokenPtr);
valueTokenPtr = TokenAfter(varTokenPtr);
@@ -6091,15 +6089,18 @@ TclCompileVariableCmd(
return TCL_ERROR;
}
CompileWord(envPtr, varTokenPtr, interp, 1);
/* TODO: Consider what values can pass through the
* IndexTailVarIfKnown() screen. Full CompileWord()
* likely does not apply here. Push known value instead. */
CompileWord(envPtr, varTokenPtr, interp, i);
TclEmitInstInt4(INST_VARIABLE, localIndex, envPtr);
if (i != numWords) {
if (i != numWords-1) {
/*
* A value has been given: set the variable, pop the value
*/
CompileWord(envPtr, valueTokenPtr, interp, 1);
CompileWord(envPtr, valueTokenPtr, interp, i+1);
TclEmitInstInt4(INST_STORE_SCALAR4, localIndex, envPtr);
TclEmitOpcode(INST_POP, envPtr);
}
@@ -6149,6 +6150,7 @@ TclCompileEnsemble(
Tcl_Parse synthetic;
int len, numBytes, result, flags = 0, i;
const char *word;
DefineLineInformation;
if (parsePtr->numWords < 2) {
return TCL_ERROR;
@@ -6388,8 +6390,14 @@ TclCompileEnsemble(
* Hand off compilation to the subcommand compiler. At last!
*/
mapPtr->loc[eclIndex].line++;
mapPtr->loc[eclIndex].next++;
result = cmdPtr->compileProc(interp, &synthetic, cmdPtr, envPtr);
mapPtr->loc[eclIndex].line--;
mapPtr->loc[eclIndex].next--;
/*
* Clean up if necessary.
*/
-1
View File
@@ -1631,7 +1631,6 @@ TclCompileScript(
TclEmitPush(TclAddLiteralObj(envPtr, Tcl_NewObj(), NULL), envPtr);
}
envPtr->numSrcBytes = (p - script);
TclStackFree(interp, parsePtr);
Tcl_DStringFree(&ds);
}
+65 -54
View File
@@ -26,14 +26,15 @@
#define ASSOC_KEY "tclPackageAboutDict"
/*
* A ClientData struct for the QueryConfig command. Store the two bits
* A ClientData struct for the QueryConfig command. Store the three bits
* of data we need; the package name for which we store a config dict,
* and the (Tcl_Interp *) in which it is stored.
* the (Tcl_Interp *) in which it is stored, and the encoding.
*/
typedef struct QCCD {
Tcl_Obj *pkg;
Tcl_Interp *interp;
char *encoding;
} QCCD;
/*
@@ -78,20 +79,25 @@ Tcl_RegisterConfig(
Tcl_Obj *pDB, *pkgDict;
Tcl_DString cmdName;
Tcl_Config *cfg;
Tcl_Encoding venc = Tcl_GetEncoding(NULL, valEncoding);
QCCD *cdPtr = (QCCD *)ckalloc(sizeof(QCCD));
cdPtr->interp = interp;
if (valEncoding) {
cdPtr->encoding = ckalloc(strlen(valEncoding)+1);
strcpy(cdPtr->encoding, valEncoding);
} else {
cdPtr->encoding = NULL;
}
cdPtr->pkg = Tcl_NewStringObj(pkgName, -1);
/*
* Phase I: Adding the provided information to the internal database of
* package meta data. Only if we have an ok encoding.
* package meta data.
*
* Phase II: Create a command for querying this database, specific to the
* package registerting its configuration. This is the approved interface
* package registering its configuration. This is the approved interface
* in TIP 59. In the future a more general interface should be done, as
* followup to TIP 59. Simply because our database is now general across
* follow-up to TIP 59. Simply because our database is now general across
* packages, and not a structure tied to one package.
*
* Note, the created command will have a reference through its clientdata.
@@ -104,52 +110,36 @@ Tcl_RegisterConfig(
* dictionaries visible at Tcl level. I.e. they are not filled
*/
if (venc != NULL) {
/*
* Retrieve package specific configuration...
*/
pDB = GetConfigDict(interp);
pDB = GetConfigDict(interp);
/*
* Retrieve package specific configuration...
*/
if (Tcl_DictObjGet(interp, pDB, cdPtr->pkg, &pkgDict) != TCL_OK
if (Tcl_DictObjGet(interp, pDB, cdPtr->pkg, &pkgDict) != TCL_OK
|| (pkgDict == NULL)) {
pkgDict = Tcl_NewDictObj();
} else if (Tcl_IsShared(pkgDict)) {
pkgDict = Tcl_DuplicateObj(pkgDict);
}
/*
* Extend the package configuration...
*/
for (cfg=configuration ; cfg->key!=NULL && cfg->key[0]!='\0' ; cfg++) {
Tcl_DString conv;
CONST char *convValue =
Tcl_ExternalToUtfDString(venc, cfg->value, -1, &conv);
/*
* We know that the keys are in ASCII/UTF-8, so for them is no
* conversion required.
*/
Tcl_DictObjPut(interp, pkgDict, Tcl_NewStringObj(cfg->key, -1),
Tcl_NewStringObj(convValue, -1));
Tcl_DStringFree(&conv);
}
/*
* We're now done with the encoding, so drop it.
*/
Tcl_FreeEncoding(venc);
/*
* Write the changes back into the overall database.
*/
Tcl_DictObjPut(interp, pDB, cdPtr->pkg, pkgDict);
pkgDict = Tcl_NewDictObj();
} else if (Tcl_IsShared(pkgDict)) {
pkgDict = Tcl_DuplicateObj(pkgDict);
}
/*
* Extend the package configuration...
* We cannot assume that the encodings are initialized, therefore
* store the value as-is in a byte array. See Bug [9b2e636361].
*/
for (cfg=configuration ; cfg->key!=NULL && cfg->key[0]!='\0' ; cfg++) {
Tcl_DictObjPut(interp, pkgDict, Tcl_NewStringObj(cfg->key, -1),
Tcl_NewByteArrayObj((unsigned char *)cfg->value, strlen(cfg->value)));
}
/*
* Write the changes back into the overall database.
*/
Tcl_DictObjPut(interp, pDB, cdPtr->pkg, pkgDict);
/*
* Now create the interface command for retrieval of the package
* information.
@@ -178,7 +168,7 @@ Tcl_RegisterConfig(
if (Tcl_CreateObjCommand(interp, Tcl_DStringValue(&cmdName),
QueryConfigObjCmd, (ClientData) cdPtr, QueryConfigDelete) == NULL) {
Tcl_Panic("%s: %s", "Tcl_RegisterConfig",
Tcl_Panic("%s: %s", "Tcl_RegisterConfig",
"Unable to create query command for package configuration");
}
@@ -213,12 +203,15 @@ QueryConfigObjCmd(
Tcl_Obj *pkgName = cdPtr->pkg;
Tcl_Obj *pDB, *pkgDict, *val, *listPtr;
int n, index;
static const char *subcmdStrings[] = {
static CONST char *subcmdStrings[] = {
"get", "list", NULL
};
enum subcmds {
CFG_GET, CFG_LIST
};
Tcl_DString conv;
Tcl_Encoding venc = NULL;
CONST char *value;
if ((objc < 2) || (objc > 3)) {
Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?argument?");
@@ -232,12 +225,12 @@ QueryConfigObjCmd(
pDB = GetConfigDict(interp);
if (Tcl_DictObjGet(interp, pDB, pkgName, &pkgDict) != TCL_OK
|| pkgDict == NULL) {
/*
/*
* Maybe a Tcl_Panic is better, because the package data has to be
* present.
*/
Tcl_SetResult(interp, "package not known", TCL_STATIC);
Tcl_SetResult(interp, "package not known", TCL_STATIC);
return TCL_ERROR;
}
@@ -248,13 +241,27 @@ QueryConfigObjCmd(
return TCL_ERROR;
}
if (Tcl_DictObjGet(interp, pkgDict, objv [2], &val) != TCL_OK
if (Tcl_DictObjGet(interp, pkgDict, objv[2], &val) != TCL_OK
|| val == NULL) {
Tcl_SetResult(interp, "key not known", TCL_STATIC);
return TCL_ERROR;
}
Tcl_SetObjResult(interp, val);
if (cdPtr->encoding) {
venc = Tcl_GetEncoding(interp, cdPtr->encoding);
if (!venc) {
return TCL_ERROR;
}
}
/*
* Value is stored as-is in a byte array, see Bug [9b2e636361],
* so we have to decode it first.
*/
value = (const char *) Tcl_GetByteArrayFromObj(val, &n);
value = Tcl_ExternalToUtfDString(venc, value, n, &conv);
Tcl_SetObjResult(interp, Tcl_NewStringObj(value,
Tcl_DStringLength(&conv)));
Tcl_DStringFree(&conv);
return TCL_OK;
case CFG_LIST:
@@ -317,8 +324,12 @@ QueryConfigDelete(
QCCD *cdPtr = (QCCD *) clientData;
Tcl_Obj *pkgName = cdPtr->pkg;
Tcl_Obj *pDB = GetConfigDict(cdPtr->interp);
Tcl_DictObjRemove(NULL, pDB, pkgName);
Tcl_DecrRefCount(pkgName);
if (cdPtr->encoding) {
ckfree((char *)cdPtr->encoding);
}
ckfree((char *)cdPtr);
}
@@ -361,7 +372,7 @@ GetConfigDict(
*
* This function is associated with the "Package About dict" assoc data
* for an interpreter; it is invoked when the interpreter is deleted in
* order to free the information assoicated with any pending error
* order to free the information associated with any pending error
* reports.
*
* Results:
+1 -1
View File
@@ -2690,7 +2690,7 @@ TclDatelex(
location->first_column = yyInput - info->dateStart;
for ( ; ; ) {
while (isspace(UCHAR(*yyInput))) {
while (TclIsSpaceProc(*yyInput)) {
yyInput++;
}
+104 -4
View File
@@ -3408,7 +3408,12 @@ EXTERN Tcl_Obj * Tcl_ObjPrintf(CONST char *format, ...);
EXTERN void Tcl_AppendPrintfToObj(Tcl_Obj *objPtr,
CONST char *format, ...);
#endif
/* Slot 580 is reserved */
#ifndef Tcl_UnsetThreadData_TCL_DECLARED
#define Tcl_UnsetThreadData_TCL_DECLARED
/* 580 */
EXTERN void Tcl_UnsetThreadData(Tcl_ThreadDataKey *keyPtr,
int size, int all);
#endif
/* Slot 581 is reserved */
/* Slot 582 is reserved */
/* Slot 583 is reserved */
@@ -4078,7 +4083,7 @@ typedef struct TclStubs {
int (*tcl_AppendFormatToObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, CONST char *format, int objc, Tcl_Obj *CONST objv[]); /* 577 */
Tcl_Obj * (*tcl_ObjPrintf) (CONST char *format, ...); /* 578 */
void (*tcl_AppendPrintfToObj) (Tcl_Obj *objPtr, CONST char *format, ...); /* 579 */
VOID *reserved580;
void (*tcl_UnsetThreadData) (Tcl_ThreadDataKey *keyPtr, int size, int all); /* 580 */
VOID *reserved581;
VOID *reserved582;
VOID *reserved583;
@@ -6483,7 +6488,10 @@ extern TclStubs *tclStubsPtr;
#define Tcl_AppendPrintfToObj \
(tclStubsPtr->tcl_AppendPrintfToObj) /* 579 */
#endif
/* Slot 580 is reserved */
#ifndef Tcl_UnsetThreadData
#define Tcl_UnsetThreadData \
(tclStubsPtr->tcl_UnsetThreadData) /* 580 */
#endif
/* Slot 581 is reserved */
/* Slot 582 is reserved */
/* Slot 583 is reserved */
@@ -6547,9 +6555,102 @@ extern TclStubs *tclStubsPtr;
#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT
#undef Tcl_PkgPresent
#define Tcl_PkgPresent(interp, name, version, exact) \
Tcl_PkgPresentEx(interp, name, version, exact, NULL)
#undef Tcl_PkgProvide
#define Tcl_PkgProvide(interp, name, version) \
Tcl_PkgProvideEx(interp, name, version, NULL)
#undef Tcl_PkgRequire
#define Tcl_PkgRequire(interp, name, version, exact) \
Tcl_PkgRequireEx(interp, name, version, exact, NULL)
#undef Tcl_GetIndexFromObj
#define Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags, indexPtr) \
Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, \
sizeof(char *), msg, flags, indexPtr)
#undef Tcl_NewBooleanObj
#define Tcl_NewBooleanObj(boolValue) \
Tcl_NewIntObj((boolValue)!=0)
#undef Tcl_DbNewBooleanObj
#define Tcl_DbNewBooleanObj(boolValue, file, line) \
Tcl_DbNewLongObj((boolValue)!=0, file, line)
#undef Tcl_SetBooleanObj
#define Tcl_SetBooleanObj(objPtr, boolValue) \
Tcl_SetIntObj((objPtr), (boolValue)!=0)
#undef Tcl_SetVar
#define Tcl_SetVar(interp, varName, newValue, flags) \
Tcl_SetVar2(interp, varName, NULL, newValue, flags)
#undef Tcl_UnsetVar
#define Tcl_UnsetVar(interp, varName, flags) \
Tcl_UnsetVar2(interp, varName, NULL, flags)
#undef Tcl_GetVar
#define Tcl_GetVar(interp, varName, flags) \
Tcl_GetVar2(interp, varName, NULL, flags)
#undef Tcl_TraceVar
#define Tcl_TraceVar(interp, varName, flags, proc, clientData) \
Tcl_TraceVar2(interp, varName, NULL, flags, proc, clientData)
#undef Tcl_UntraceVar
#define Tcl_UntraceVar(interp, varName, flags, proc, clientData) \
Tcl_UntraceVar2(interp, varName, NULL, flags, proc, clientData)
#undef Tcl_VarTraceInfo
#define Tcl_VarTraceInfo(interp, varName, flags, proc, prevClientData) \
Tcl_VarTraceInfo2(interp, varName, NULL, flags, proc, prevClientData)
#undef Tcl_UpVar
#define Tcl_UpVar(interp, frameName, varName, localName, flags) \
Tcl_UpVar2(interp, frameName, varName, NULL, localName, flags)
#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
# if defined(__CYGWIN__) && defined(TCL_WIDE_INT_IS_LONG)
/* On Cygwin64, long is 64-bit while on Win64 long is 32-bit. Therefore
* we have to make sure that all stub entries on Cygwin64 follow the
* Win64 signature. Cygwin64 stubbed extensions cannot use those stub
* entries any more, they should use the 64-bit alternatives where
* possible. Tcl 9 must find a better solution, but that cannot be done
* without introducing a binary incompatibility.
*/
# undef Tcl_DbNewLongObj
# undef Tcl_GetLongFromObj
# undef Tcl_NewLongObj
# undef Tcl_SetLongObj
# undef Tcl_ExprLong
# undef Tcl_ExprLongObj
# undef Tcl_UniCharNcmp
# undef Tcl_UtfNcmp
# undef Tcl_UtfNcasecmp
# undef Tcl_UniCharNcasecmp
# define Tcl_DbNewLongObj ((Tcl_Obj*(*)(long,const char*,int))Tcl_DbNewWideIntObj)
# define Tcl_GetLongFromObj ((int(*)(Tcl_Interp*,Tcl_Obj*,long*))Tcl_GetWideIntFromObj)
# define Tcl_NewLongObj ((Tcl_Obj*(*)(long))Tcl_NewWideIntObj)
# define Tcl_SetLongObj ((void(*)(Tcl_Obj*,long))Tcl_SetWideIntObj)
# define Tcl_ExprLong TclExprLong
static inline int TclExprLong(Tcl_Interp *interp, const char *string, long *ptr){
int intValue;
int result = tclStubsPtr->tcl_ExprLong(interp, string, (long *)&intValue);
if (result == TCL_OK) *ptr = (long)intValue;
return result;
}
# define Tcl_ExprLongObj TclExprLongObj
static inline int TclExprLongObj(Tcl_Interp *interp, Tcl_Obj *obj, long *ptr){
int intValue;
int result = tclStubsPtr->tcl_ExprLongObj(interp, obj, (long *)&intValue);
if (result == TCL_OK) *ptr = (long)intValue;
return result;
}
# define Tcl_UniCharNcmp(ucs,uct,n) \
((int(*)(const Tcl_UniChar*,const Tcl_UniChar*,unsigned int))tclStubsPtr->tcl_UniCharNcmp)(ucs,uct,(unsigned int)(n))
# define Tcl_UtfNcmp(s1,s2,n) \
((int(*)(const char*,const char*,unsigned int))tclStubsPtr->tcl_UtfNcmp)(s1,s2,(unsigned int)(n))
# define Tcl_UtfNcasecmp(s1,s2,n) \
((int(*)(const char*,const char*,unsigned int))tclStubsPtr->tcl_UtfNcasecmp)(s1,s2,(unsigned int)(n))
# define Tcl_UniCharNcasecmp(ucs,uct,n) \
((int(*)(const Tcl_UniChar*,const Tcl_UniChar*,unsigned int))tclStubsPtr->tcl_UniCharNcasecmp)(ucs,uct,(unsigned int)(n))
# endif
#endif
/*
* Deprecated Tcl procedures:
*/
#undef Tcl_EvalObj
#define Tcl_EvalObj(interp,objPtr) \
Tcl_EvalObjEx((interp),(objPtr),0)
@@ -6558,4 +6659,3 @@ extern TclStubs *tclStubsPtr;
Tcl_EvalObjEx((interp),(objPtr),TCL_EVAL_GLOBAL)
#endif /* _TCLDECLS */
+4 -9
View File
@@ -949,14 +949,8 @@ TclInitSubsystems(void)
TclpInitLock();
if (subsystemsInitialized == 0) {
/*
* Have to set this bit here to avoid deadlock with the routines
* below us that call into TclInitSubsystems.
*/
subsystemsInitialized = 1;
/*
/*
* Initialize locks used by the memory allocators before anything
* interesting happens so we can use the allocators in the
* implementation of self-initializing locks.
@@ -974,12 +968,13 @@ TclInitSubsystems(void)
TclpInitPlatform(); /* Creates signal handler(s) */
TclInitDoubleConversion(); /* Initializes constants for
* converting to/from double. */
TclInitObjSubsystem(); /* Register obj types, create
TclInitObjSubsystem(); /* Register obj types, create
* mutexes. */
TclInitIOSubsystem(); /* Inits a tsd key (noop). */
TclInitEncodingSubsystem(); /* Process wide encoding init. */
TclpSetInterfaces();
TclInitNamespaceSubsystem();/* Register ns obj type (mutexed). */
TclInitNamespaceSubsystem();/* Register ns obj type (mutexed). */
subsystemsInitialized = 1;
}
TclpInitUnlock();
}
+11 -9
View File
@@ -836,13 +836,13 @@ TclFinalizeExecution(void)
(TCL_ALLOCALIGN/sizeof(Tcl_Obj *))
/*
* OFFSET computes how many words have to be skipped until the next aligned
* wordSkip computes how many words have to be skipped until the next aligned
* word. Note that we are only interested in the low order bits of ptr, so
* that any possible information loss in PTR2INT is of no consequence.
*/
static inline int
OFFSET(
wordSkip(
void *ptr)
{
int mask = TCL_ALLOCALIGN-1;
@@ -855,7 +855,7 @@ OFFSET(
*/
#define MEMSTART(markerPtr) \
((markerPtr) + OFFSET(markerPtr))
((markerPtr) + wordSkip(markerPtr))
/*
@@ -900,7 +900,7 @@ GrowEvaluationStack(
}
} else {
Tcl_Obj **tmpMarkerPtr = esPtr->tosPtr + 1;
int offset = OFFSET(tmpMarkerPtr);
int offset = wordSkip(tmpMarkerPtr);
if (needed + offset < 0) {
/*
@@ -2311,6 +2311,7 @@ TclExecuteByteCode(
initCatchTop += moved;
catchTop += moved;
bcFramePtr = (CmdFrame *) (initCatchTop + codePtr->maxExceptDepth + 1);
initTosPtr += moved;
tosPtr += moved;
esPtr = iPtr->execEnvPtr->execStackPtr;
@@ -2424,11 +2425,6 @@ TclExecuteByteCode(
if (result == TCL_OK) {
Tcl_Obj *objPtr;
#ifndef TCL_COMPILE_DEBUG
if (*(pc+pcAdjustment) == INST_POP) {
NEXT_INST_V((pcAdjustment+1), objc, 0);
}
#endif
/*
* Push the call's object result and continue execution with
* the next instruction.
@@ -2455,6 +2451,12 @@ TclExecuteByteCode(
TclNewObj(objPtr);
Tcl_IncrRefCount(objPtr);
iPtr->objResultPtr = objPtr;
#ifndef TCL_COMPILE_DEBUG
if (*(pc+pcAdjustment) == INST_POP) {
TclDecrRefCount(objResultPtr);
NEXT_INST_V((pcAdjustment+1), objc, 0);
}
#endif
NEXT_INST_V(pcAdjustment, objc, -1);
} else {
cleanup = objc;
+92 -8
View File
@@ -229,6 +229,7 @@ static int WriteChars(Channel *chanPtr, const char *src,
static Tcl_Obj * FixLevelCode(Tcl_Obj *msg);
static void SpliceChannel(Tcl_Channel chan);
static void CutChannel(Tcl_Channel chan);
static int WillRead(Channel *chanPtr);
/*
* Simplifying helper macros. All may use their argument(s) multiple times.
@@ -342,6 +343,52 @@ static Tcl_ObjType tclChannelType = {
(((st)->csPtrW) && ((fl) & TCL_WRITABLE)))
#define MAX_CHANNEL_BUFFER_SIZE (1024*1024)
/*
* ChanRead, dropped here by a time traveler, see 8.6
*/
static inline int
ChanRead(
Channel *chanPtr,
char *dst,
int dstSize,
int *errnoPtr)
{
if (WillRead(chanPtr) < 0) {
return -1;
}
return chanPtr->typePtr->inputProc(chanPtr->instanceData, dst, dstSize,
errnoPtr);
}
static inline Tcl_WideInt
ChanSeek(
Channel *chanPtr,
Tcl_WideInt offset,
int mode,
int *errnoPtr)
{
/*
* Note that we prefer the wideSeekProc if that field is available in the
* type and non-NULL.
*/
if (HaveVersion(chanPtr->typePtr, TCL_CHANNEL_VERSION_3) &&
chanPtr->typePtr->wideSeekProc != NULL) {
return chanPtr->typePtr->wideSeekProc(chanPtr->instanceData,
offset, mode, errnoPtr);
}
if (offset<Tcl_LongAsWide(LONG_MIN) || offset>Tcl_LongAsWide(LONG_MAX)) {
*errnoPtr = EOVERFLOW;
return Tcl_LongAsWide(-1);
}
return Tcl_LongAsWide(chanPtr->typePtr->seekProc(chanPtr->instanceData,
Tcl_WideAsLong(offset), mode, errnoPtr));
}
/*
*---------------------------------------------------------------------------
@@ -3548,6 +3595,33 @@ Tcl_WriteObj(
}
}
static void WillWrite(Channel *chanPtr)
{
int inputBuffered;
if ((chanPtr->typePtr->seekProc != NULL)
&& ((inputBuffered = Tcl_InputBuffered((Tcl_Channel) chanPtr)) > 0)) {
int ignore;
DiscardInputQueued(chanPtr->state, 0);
ChanSeek(chanPtr, - inputBuffered, SEEK_CUR, &ignore);
}
}
static int WillRead(Channel *chanPtr)
{
if ((chanPtr->typePtr->seekProc != NULL)
&& (Tcl_OutputBuffered((Tcl_Channel) chanPtr) > 0)) {
if ((chanPtr->state->curOutPtr != NULL)
&& IsBufferReady(chanPtr->state->curOutPtr)) {
SetFlag(chanPtr->state, BUFFER_READY);
}
if (FlushChannel(NULL, chanPtr, 0) != 0) {
return -1;
}
}
return 0;
}
/*
*----------------------------------------------------------------------
*
@@ -3581,6 +3655,10 @@ WriteBytes(
char *dst;
int dstMax, sawLF, savedLF, total, dstLen, toWrite, translate;
if (srcLen) {
WillWrite(chanPtr);
}
total = 0;
sawLF = 0;
savedLF = 0;
@@ -3682,6 +3760,10 @@ WriteChars(
Tcl_Encoding encoding;
char safe[BUFFER_PADDING];
if (srcLen) {
WillWrite(chanPtr);
}
total = 0;
sawLF = 0;
savedLF = 0;
@@ -5187,8 +5269,8 @@ Tcl_ReadRaw(
* The case of 'bytesToRead == 0' at this point cannot happen.
*/
nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData,
bufPtr + copied, bytesToRead - copied, &result);
nread = ChanRead(chanPtr, bufPtr + copied,
bytesToRead - copied, &result);
#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING
}
@@ -6353,8 +6435,7 @@ GetInput(
} else {
#endif /* TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING */
nread = (chanPtr->typePtr->inputProc)(chanPtr->instanceData,
InsertPoint(bufPtr), toRead, &result);
nread = ChanRead(chanPtr, InsertPoint(bufPtr), toRead, &result);
#ifdef TCL_IO_TRACK_OS_FOR_DRIVER_WITH_BAD_BLOCKING
}
@@ -6657,8 +6738,8 @@ Tcl_Tell(
outputBuffered = Tcl_OutputBuffered(chan);
if ((inputBuffered != 0) && (outputBuffered != 0)) {
Tcl_SetErrno(EFAULT);
return Tcl_LongAsWide(-1);
/*Tcl_SetErrno(EFAULT);*/
/*return Tcl_LongAsWide(-1);*/
}
/*
@@ -6679,6 +6760,7 @@ Tcl_Tell(
Tcl_SetErrno(result);
return Tcl_LongAsWide(-1);
}
if (inputBuffered != 0) {
return curPos - inputBuffered;
}
@@ -6780,8 +6862,10 @@ Tcl_TruncateChannel(
* pre-read input data.
*/
if (Tcl_Seek(chan, (Tcl_WideInt)0, SEEK_CUR) == Tcl_LongAsWide(-1)) {
return TCL_ERROR;
WillWrite(chanPtr);
if (WillRead(chanPtr) < 0) {
return TCL_ERROR;
}
/*
+17 -17
View File
@@ -1823,24 +1823,24 @@ TclInitChanCmd(
* function at the moment.
*/
static const EnsembleImplMap initMap[] = {
{"blocked", Tcl_FblockedObjCmd},
{"close", Tcl_CloseObjCmd},
{"copy", Tcl_FcopyObjCmd},
{"create", TclChanCreateObjCmd}, /* TIP #219 */
{"eof", Tcl_EofObjCmd},
{"event", Tcl_FileEventObjCmd},
{"flush", Tcl_FlushObjCmd},
{"gets", Tcl_GetsObjCmd},
{"pending", ChanPendingObjCmd}, /* TIP #287 */
{"postevent", TclChanPostEventObjCmd}, /* TIP #219 */
{"puts", Tcl_PutsObjCmd},
{"read", Tcl_ReadObjCmd},
{"seek", Tcl_SeekObjCmd},
{"tell", Tcl_TellObjCmd},
{"truncate", ChanTruncateObjCmd}, /* TIP #208 */
{NULL}
{"blocked", Tcl_FblockedObjCmd, NULL},
{"close", Tcl_CloseObjCmd, NULL},
{"copy", Tcl_FcopyObjCmd, NULL},
{"create", TclChanCreateObjCmd, NULL}, /* TIP #219 */
{"eof", Tcl_EofObjCmd, NULL},
{"event", Tcl_FileEventObjCmd, NULL},
{"flush", Tcl_FlushObjCmd, NULL},
{"gets", Tcl_GetsObjCmd, NULL},
{"pending", ChanPendingObjCmd, NULL}, /* TIP #287 */
{"postevent", TclChanPostEventObjCmd, NULL}, /* TIP #219 */
{"puts", Tcl_PutsObjCmd, NULL},
{"read", Tcl_ReadObjCmd, NULL},
{"seek", Tcl_SeekObjCmd, NULL},
{"tell", Tcl_TellObjCmd, NULL},
{"truncate", ChanTruncateObjCmd, NULL}, /* TIP #208 */
{NULL,NULL, NULL}
};
static const char *extras[] = {
static const char *const extras[] = {
"configure", "::fconfigure",
"names", "::file channels",
NULL
+1
View File
@@ -85,6 +85,7 @@ typedef struct {
*----------------------------------------------------------------------
*/
#undef Tcl_GetIndexFromObj
int
Tcl_GetIndexFromObj(
Tcl_Interp *interp, /* Used for error reporting if not NULL. */
+12 -2
View File
@@ -1230,13 +1230,17 @@ typedef void **TclHandle;
MODULE_SCOPE void * TclThreadDataKeyGet(Tcl_ThreadDataKey *keyPtr);
MODULE_SCOPE void TclThreadDataKeySet(Tcl_ThreadDataKey *keyPtr,
void *data);
MODULE_SCOPE void TclThreadFreeData(void *blockPtr, int size);
/*
* This is a convenience macro used to initialize a thread local storage ptr.
*/
#define TCL_TSD_INIT(keyPtr) \
(ThreadSpecificData *)Tcl_GetThreadData((keyPtr), sizeof(ThreadSpecificData))
#define TCL_TSD_INIT(keyPtr) (ThreadSpecificData *) \
Tcl_GetThreadData((keyPtr), sizeof(ThreadSpecificData))
#define TCL_TSD_TERM(keyPtr) (ThreadSpecificData *) \
Tcl_UnsetThreadData((keyPtr), sizeof(ThreadSpecificData), 0)
/*
*----------------------------------------------------------------
@@ -2665,6 +2669,7 @@ MODULE_SCOPE int TclpThreadCreate(Tcl_ThreadId *idPtr,
MODULE_SCOPE int TclpFindVariable(const char *name, int *lengthPtr);
MODULE_SCOPE void TclpInitLibraryPath(char **valuePtr,
int *lengthPtr, Tcl_Encoding *encodingPtr);
MODULE_SCOPE void TclpResetLocks(void);
MODULE_SCOPE void TclpInitLock(void);
MODULE_SCOPE void TclpInitPlatform(void);
MODULE_SCOPE void TclpInitUnlock(void);
@@ -2705,6 +2710,10 @@ MODULE_SCOPE void TclpUnloadFile(Tcl_LoadHandle loadHandle);
MODULE_SCOPE void * TclpThreadDataKeyGet(Tcl_ThreadDataKey *keyPtr);
MODULE_SCOPE void TclpThreadDataKeySet(Tcl_ThreadDataKey *keyPtr,
void *data);
MODULE_SCOPE void TclpThreadDataKeyUnset(Tcl_ThreadDataKey *keyPtr,
int freeValue);
MODULE_SCOPE void TclpThreadDataKeyUnsetAll(Tcl_ThreadDataKey *keyPtr,
int freeValue);
MODULE_SCOPE void TclpThreadExit(int status);
MODULE_SCOPE size_t TclpThreadGetStackSize(void);
MODULE_SCOPE void TclRememberCondition(Tcl_Condition *mutex);
@@ -2762,6 +2771,7 @@ MODULE_SCOPE Tcl_WideInt TclpGetWideClicks(void);
MODULE_SCOPE double TclpWideClicksToNanoseconds(Tcl_WideInt clicks);
#endif
MODULE_SCOPE Tcl_Obj * TclDisassembleByteCodeObj(Tcl_Obj *objPtr);
MODULE_SCOPE int TclUtfCasecmp(CONST char *cs, CONST char *ct);
/*
*----------------------------------------------------------------
+3 -2
View File
@@ -342,9 +342,10 @@ Tcl_Main(
Tcl_Interp *interp;
Tcl_DString appName;
Tcl_FindExecutable(argv[0]);
interp = Tcl_CreateInterp();
TclpSetInitialEncodings();
TclpFindExecutable(argv[0]);
Tcl_InitMemory(interp);
/*
+59 -24
View File
@@ -737,6 +737,10 @@ Tcl_CreateNamespace(
Tcl_DString *namePtr, *buffPtr;
int newEntry, nameLen;
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
const char *nameStr;
Tcl_DString tmpBuffer;
Tcl_DStringInit(&tmpBuffer);
/*
* If there is no active namespace, the interpreter is being initialized.
@@ -750,39 +754,68 @@ Tcl_CreateNamespace(
parentPtr = NULL;
simpleName = "";
} else if (*name == '\0') {
goto doCreate;
}
/*
* Ensure that there are no trailing colons as that causes chaos when a
* deleteProc is specified. [Bug d614d63989]
*/
if (deleteProc != NULL) {
nameStr = name + strlen(name) - 2;
if (nameStr >= name && nameStr[1] == ':' && nameStr[0] == ':') {
Tcl_DStringAppend(&tmpBuffer, name, -1);
while ((nameLen = Tcl_DStringLength(&tmpBuffer)) > 0
&& Tcl_DStringValue(&tmpBuffer)[nameLen-1] == ':') {
Tcl_DStringSetLength(&tmpBuffer, nameLen-1);
}
name = Tcl_DStringValue(&tmpBuffer);
}
}
/*
* If we've ended up with an empty string now, we're attempting to create
* the global namespace despite the global namespace existing. That's
* naughty!
*/
if (*name == '\0') {
Tcl_ResetResult(interp);
Tcl_AppendResult(interp, "can't create namespace \"\": "
"only global namespace can have empty name", NULL);
Tcl_DStringFree(&tmpBuffer);
return NULL;
} else {
/*
* Find the parent for the new namespace.
*/
}
TclGetNamespaceForQualName(interp, name, NULL, TCL_CREATE_NS_IF_UNKNOWN,
&parentPtr, &dummy1Ptr, &dummy2Ptr, &simpleName);
/*
* Find the parent for the new namespace.
*/
/*
* If the unqualified name at the end is empty, there were trailing
* "::"s after the namespace's name which we ignore. The new namespace
* was already (recursively) created and is pointed to by parentPtr.
*/
TclGetNamespaceForQualName(interp, name, NULL, TCL_CREATE_NS_IF_UNKNOWN,
&parentPtr, &dummy1Ptr, &dummy2Ptr, &simpleName);
if (*simpleName == '\0') {
return (Tcl_Namespace *) parentPtr;
}
/*
* If the unqualified name at the end is empty, there were trailing "::"s
* after the namespace's name which we ignore. The new namespace was
* already (recursively) created and is pointed to by parentPtr.
*/
/*
* Check for a bad namespace name and make sure that the name does not
* already exist in the parent namespace.
*/
if (*simpleName == '\0') {
Tcl_DStringFree(&tmpBuffer);
return (Tcl_Namespace *) parentPtr;
}
if (Tcl_FindHashEntry(&parentPtr->childTable, simpleName) != NULL) {
Tcl_AppendResult(interp, "can't create namespace \"", name,
"\": already exists", NULL);
return NULL;
}
/*
* Check for a bad namespace name and make sure that the name does not
* already exist in the parent namespace.
*/
if (Tcl_FindHashEntry(&parentPtr->childTable, simpleName) != NULL) {
Tcl_AppendResult(interp, "can't create namespace \"", name,
"\": already exists", NULL);
Tcl_DStringFree(&tmpBuffer);
return NULL;
}
/*
@@ -790,6 +823,7 @@ Tcl_CreateNamespace(
* of namespaces created.
*/
doCreate:
nsPtr = (Namespace *) ckalloc(sizeof(Namespace));
nsPtr->name = ckalloc((unsigned) (strlen(simpleName)+1));
strcpy(nsPtr->name, simpleName);
@@ -879,6 +913,7 @@ Tcl_CreateNamespace(
Tcl_DStringFree(&buffer1);
Tcl_DStringFree(&buffer2);
Tcl_DStringFree(&tmpBuffer);
/*
* Return a pointer to the new namespace.
+6 -4
View File
@@ -1700,14 +1700,14 @@ Tcl_InvalidateStringRep(
*----------------------------------------------------------------------
*/
#ifdef TCL_MEM_DEBUG
#undef Tcl_NewBooleanObj
#ifdef TCL_MEM_DEBUG
Tcl_Obj *
Tcl_NewBooleanObj(
register int boolValue) /* Boolean used to initialize new object. */
{
return Tcl_DbNewBooleanObj(boolValue, "unknown", 0);
return Tcl_DbNewLongObj(boolValue!=0, "unknown", 0);
}
#else /* if not TCL_MEM_DEBUG */
@@ -1718,7 +1718,7 @@ Tcl_NewBooleanObj(
{
register Tcl_Obj *objPtr;
TclNewBooleanObj(objPtr, boolValue);
TclNewIntObj(objPtr, boolValue!=0);
return objPtr;
}
#endif /* TCL_MEM_DEBUG */
@@ -1749,6 +1749,7 @@ Tcl_NewBooleanObj(
*----------------------------------------------------------------------
*/
#undef Tcl_DbNewBooleanObj
#ifdef TCL_MEM_DEBUG
Tcl_Obj *
@@ -1801,6 +1802,7 @@ Tcl_DbNewBooleanObj(
*----------------------------------------------------------------------
*/
#undef Tcl_SetBooleanObj
void
Tcl_SetBooleanObj(
register Tcl_Obj *objPtr, /* Object whose internal rep to init. */
@@ -1810,7 +1812,7 @@ Tcl_SetBooleanObj(
Tcl_Panic("%s called with shared object", "Tcl_SetBooleanObj");
}
TclSetBooleanObj(objPtr, boolValue);
TclSetIntObj(objPtr, boolValue!=0);
}
/*
+1
View File
@@ -1566,6 +1566,7 @@ Tcl_ParseVar(
code = TclSubstTokens(interp, parsePtr->tokenPtr, parsePtr->numTokens,
NULL, 1, NULL, NULL);
Tcl_FreeParse(parsePtr);
TclStackFree(interp, parsePtr);
if (code != TCL_OK) {
return NULL;
+5 -2
View File
@@ -106,6 +106,7 @@ static const char * PkgRequireCore(Tcl_Interp *interp, const char *name,
*----------------------------------------------------------------------
*/
#undef Tcl_PkgProvide
int
Tcl_PkgProvide(
Tcl_Interp *interp, /* Interpreter in which package is now
@@ -186,6 +187,7 @@ Tcl_PkgProvideEx(
*----------------------------------------------------------------------
*/
#undef Tcl_PkgRequire
const char *
Tcl_PkgRequire(
Tcl_Interp *interp, /* Interpreter in which package is now
@@ -655,6 +657,7 @@ PkgRequireCore(
*----------------------------------------------------------------------
*/
#undef Tcl_PkgPresent
const char *
Tcl_PkgPresent(
Tcl_Interp *interp, /* Interpreter in which package is now
@@ -921,7 +924,7 @@ Tcl_PackageObjCmd(
version = TclGetString(objv[3]);
}
}
Tcl_PkgPresent(interp, name, version, exact);
Tcl_PkgPresentEx(interp, name, version, exact, NULL);
return TCL_ERROR;
break;
}
@@ -945,7 +948,7 @@ Tcl_PackageObjCmd(
if (CheckVersionAndConvert(interp, argv3, NULL, NULL) != TCL_OK) {
return TCL_ERROR;
}
return Tcl_PkgProvide(interp, argv2, argv3);
return Tcl_PkgProvideEx(interp, argv2, argv3, NULL);
case PKG_REQUIRE:
require:
if (objc < 3) {
+6
View File
@@ -398,11 +398,14 @@ ValidateFormat(
*/
case 'd':
case 'e':
case 'E':
case 'f':
case 'g':
case 'G':
case 'i':
case 'o':
case 'x':
case 'X':
break;
case 'u':
if (flags & SCAN_BIG) {
@@ -727,6 +730,7 @@ Tcl_ScanObjCmd(
parseFlag |= TCL_PARSE_OCTAL_ONLY | TCL_PARSE_SCAN_PREFIXES;
break;
case 'x':
case 'X':
op = 'i';
parseFlag |= TCL_PARSE_HEXADECIMAL_ONLY;
break;
@@ -738,7 +742,9 @@ Tcl_ScanObjCmd(
case 'f':
case 'e':
case 'E':
case 'g':
case 'G':
op = 'f';
break;
Executable → Regular
View File
+86 -1
View File
@@ -191,6 +191,91 @@ Tcl_WinTCharToUtf(
string, len, dsPtr);
}
#if defined(TCL_WIDE_INT_IS_LONG)
/* On Cygwin64, long is 64-bit while on Win64 long is 32-bit. Therefore
* we have to make sure that all stub entries on Cygwin64 follow the Win64
* signature. Tcl 9 must find a better solution, but that cannot be done
* without introducing a binary incompatibility.
*/
#define Tcl_DbNewLongObj ((Tcl_Obj*(*)(long,const char*,int))dbNewLongObj)
static Tcl_Obj *dbNewLongObj(
int intValue,
const char *file,
int line
) {
#ifdef TCL_MEM_DEBUG
register Tcl_Obj *objPtr;
TclDbNewObj(objPtr, file, line);
objPtr->bytes = NULL;
objPtr->internalRep.longValue = (long) intValue;
objPtr->typePtr = &tclIntType;
return objPtr;
#else
return Tcl_NewIntObj(intValue);
#endif
}
#define Tcl_GetLongFromObj (int(*)(Tcl_Interp*,Tcl_Obj*,long*))Tcl_GetIntFromObj
#define Tcl_NewLongObj (Tcl_Obj*(*)(long))Tcl_NewIntObj
#define Tcl_SetLongObj (void(*)(Tcl_Obj*,long))Tcl_SetIntObj
static int exprInt(Tcl_Interp *interp, const char *expr, int *ptr){
long longValue;
int result = Tcl_ExprLong(interp, expr, &longValue);
if (result == TCL_OK) {
if ((longValue >= -(long)(UINT_MAX))
&& (longValue <= (long)(UINT_MAX))) {
*ptr = (int)longValue;
} else {
Tcl_SetResult(interp,
"integer value too large to represent as non-long integer",
TCL_STATIC);
result = TCL_ERROR;
}
}
return result;
}
#define Tcl_ExprLong (int(*)(Tcl_Interp*,const char*,long*))exprInt
static int exprIntObj(Tcl_Interp *interp, Tcl_Obj*expr, int *ptr){
long longValue;
int result = Tcl_ExprLongObj(interp, expr, &longValue);
if (result == TCL_OK) {
if ((longValue >= -(long)(UINT_MAX))
&& (longValue <= (long)(UINT_MAX))) {
*ptr = (int)longValue;
} else {
Tcl_SetResult(interp,
"integer value too large to represent as non-long integer",
TCL_STATIC);
result = TCL_ERROR;
}
}
return result;
}
#define Tcl_ExprLongObj (int(*)(Tcl_Interp*,Tcl_Obj*,long*))exprIntObj
static int uniCharNcmp(const Tcl_UniChar *ucs, const Tcl_UniChar *uct, unsigned int n){
return Tcl_UniCharNcmp(ucs, uct, (unsigned long)n);
}
#define Tcl_UniCharNcmp (int(*)(const Tcl_UniChar*,const Tcl_UniChar*,unsigned long))uniCharNcmp
static int utfNcmp(const char *s1, const char *s2, unsigned int n){
return Tcl_UtfNcmp(s1, s2, (unsigned long)n);
}
#define Tcl_UtfNcmp (int(*)(const char*,const char*,unsigned long))utfNcmp
static int utfNcasecmp(const char *s1, const char *s2, unsigned int n){
return Tcl_UtfNcasecmp(s1, s2, (unsigned long)n);
}
#define Tcl_UtfNcasecmp (int(*)(const char*,const char*,unsigned long))utfNcasecmp
static int uniCharNcasecmp(const Tcl_UniChar *ucs, const Tcl_UniChar *uct, unsigned int n){
return Tcl_UniCharNcasecmp(ucs, uct, (unsigned long)n);
}
#define Tcl_UniCharNcasecmp (int(*)(const Tcl_UniChar*,const Tcl_UniChar*,unsigned long))uniCharNcasecmp
static int formatInt(char *buffer, int n){
return TclFormatInt(buffer, (long)n);
}
#define TclFormatInt (int(*)(char *, long))formatInt
#endif
#else /* UNIX and MAC */
# define TclpLocaltime_unix TclpLocaltime
# define TclpGmtime_unix TclpGmtime
@@ -1255,7 +1340,7 @@ TclStubs tclStubs = {
Tcl_AppendFormatToObj, /* 577 */
Tcl_ObjPrintf, /* 578 */
Tcl_AppendPrintfToObj, /* 579 */
NULL, /* 580 */
Tcl_UnsetThreadData, /* 580 */
NULL, /* 581 */
NULL, /* 582 */
NULL, /* 583 */
+4 -4
View File
@@ -1545,14 +1545,14 @@ DelCallbackProc(
*
* TestdelCmd --
*
* This procedure implements the "testdcall" command. It is used
* to test Tcl_CallWhenDeleted.
* This procedure implements the "testdel" command. It is used
* to test calling of command deletion callbacks.
*
* Results:
* A standard Tcl result.
*
* Side effects:
* Creates and deletes interpreters.
* Creates a command.
*
*----------------------------------------------------------------------
*/
@@ -1848,7 +1848,7 @@ TestdstringCmd(
if (Tcl_GetInt(interp, argv[2], &count) != TCL_OK) {
return TCL_ERROR;
}
Tcl_DStringTrunc(&dstring, count);
Tcl_DStringSetLength(&dstring, count);
} else if (strcmp(argv[1], "start") == 0) {
if (argc != 2) {
goto wrongNumArgs;
+64
View File
@@ -101,6 +101,70 @@ Tcl_GetThreadData(
return result;
}
/*
*----------------------------------------------------------------------
*
* Tcl_UnsetThreadData --
*
* This function finalizes and deallocates a chunk of thread local
* storage.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
Tcl_UnsetThreadData(
Tcl_ThreadDataKey *keyPtr, /* Identifier for the data chunk */
int size, /* Size of storage block */
int all) /* Unset for all threads? */
{
#ifdef TCL_THREADS
void *result = TclpThreadDataKeyGet(keyPtr);
if (all) {
TclpThreadDataKeyUnsetAll(keyPtr, 1 /* free */);
} else {
TclpThreadDataKeyUnset(keyPtr, 1 /* free */);
}
#else
void *result = *keyPtr;
TclThreadFreeData(result, size);
ForgetSyncObject((char *) keyPtr, &keyRecord);
#endif /* TCL_THREADS */
}
/*
*----------------------------------------------------------------------
*
* TclThreadFreeData --
*
* This function deallocates a chunk of thread local storage.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclThreadFreeData(
void *blockPtr, /* Pointer to thread local data chunk */
int size) /* Size of storage block */
{
if (blockPtr != NULL) {
memset(blockPtr, 0, (size_t) size);
ckfree((char *) blockPtr);
}
}
/*
*----------------------------------------------------------------------
*
+90
View File
@@ -397,6 +397,96 @@ TclpThreadDataKeySet(
Tcl_SetHashValue(hPtr, data);
}
/*
*----------------------------------------------------------------------
*
* TclpThreadDataKeyUnset --
*
* This procedure removes the pointer to a block of thread local
* storage.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpThreadDataKeyUnset(
Tcl_ThreadDataKey *keyPtr, /* Identifier for the data chunk, really
* (pthread_key_t **) */
int freeValue) /* Also free the value? */
{
Tcl_HashTable *hashTablePtr;
Tcl_HashEntry *hPtr;
hashTablePtr = ThreadStorageGetHashTable(Tcl_GetCurrentThread());
hPtr = Tcl_FindHashEntry(hashTablePtr, (char *) keyPtr);
if (hPtr != NULL) {
if (freeValue) {
void *blockPtr = Tcl_GetHashValue(hPtr);
if (blockPtr != NULL) {
ckfree(blockPtr);
}
}
Tcl_DeleteHashEntry(hPtr);
}
}
/*
*----------------------------------------------------------------------
*
* TclpThreadDataKeyUnsetAll --
*
* This procedure removes the pointer to a block of thread local
* storage from all threads.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpThreadDataKeyUnsetAll(
Tcl_ThreadDataKey *keyPtr, /* Identifier for the data chunk, really
* (pthread_key_t **) */
int freeValue) /* Also free the value? */
{
Tcl_HashEntry *hPtr;
Tcl_HashSearch search;
Tcl_MutexLock(&threadStorageLock);
for (hPtr = Tcl_FirstHashEntry(&threadStorageHashTable, &search);
hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) {
Tcl_HashTable *hashTablePtr = Tcl_GetHashValue(hPtr);
if (hashTablePtr != NULL) {
Tcl_HashEntry *hPtr2 = Tcl_FindHashEntry(hashTablePtr,
(char *) keyPtr);
if (hPtr2 != NULL) {
if (freeValue) {
void *blockPtr = Tcl_GetHashValue(hPtr2);
if (blockPtr != NULL) {
ckfree(blockPtr);
}
}
Tcl_DeleteHashEntry(hPtr2);
}
}
}
Tcl_MutexUnlock(&threadStorageLock);
}
/*
*----------------------------------------------------------------------
*
+11 -11
View File
@@ -292,7 +292,7 @@ Tcl_ThreadObjCmd(
return TCL_OK;
case THREAD_ID:
if (objc == 2) {
Tcl_Obj *idObj = Tcl_NewLongObj((long) Tcl_GetCurrentThread());
Tcl_Obj *idObj = Tcl_NewWideIntObj((Tcl_WideInt)(size_t) Tcl_GetCurrentThread());
Tcl_SetObjResult(interp, idObj);
return TCL_OK;
@@ -301,24 +301,24 @@ Tcl_ThreadObjCmd(
return TCL_ERROR;
}
case THREAD_JOIN: {
long id;
Tcl_WideInt id;
int result, status;
if (objc != 3) {
Tcl_WrongNumArgs(interp, 2, objv, "id");
return TCL_ERROR;
}
if (Tcl_GetLongFromObj(interp, objv[2], &id) != TCL_OK) {
if (Tcl_GetWideIntFromObj(interp, objv[2], &id) != TCL_OK) {
return TCL_ERROR;
}
result = Tcl_JoinThread ((Tcl_ThreadId) id, &status);
result = Tcl_JoinThread ((Tcl_ThreadId)(size_t)id, &status);
if (result == TCL_OK) {
Tcl_SetIntObj (Tcl_GetObjResult (interp), status);
} else {
char buf [20];
sprintf(buf, "%ld", id);
sprintf(buf, "%" TCL_LL_MODIFIER "d", id);
Tcl_AppendResult(interp, "cannot join thread ", buf, NULL);
}
return result;
@@ -330,7 +330,7 @@ Tcl_ThreadObjCmd(
}
return TclThreadList(interp);
case THREAD_SEND: {
long id;
Tcl_WideInt id;
const char *script;
int wait, arg;
@@ -349,12 +349,12 @@ Tcl_ThreadObjCmd(
wait = 1;
arg = 2;
}
if (Tcl_GetLongFromObj(interp, objv[arg], &id) != TCL_OK) {
if (Tcl_GetWideIntFromObj(interp, objv[arg], &id) != TCL_OK) {
return TCL_ERROR;
}
arg++;
script = Tcl_GetString(objv[arg]);
return TclThreadSend(interp, (Tcl_ThreadId) id, script, wait);
return TclThreadSend(interp, (Tcl_ThreadId)(size_t)id, script, wait);
}
case THREAD_ERRORPROC: {
/*
@@ -434,7 +434,7 @@ TclCreateThread(
Tcl_ConditionWait(&ctrl.condWait, &threadMutex, NULL);
Tcl_MutexUnlock(&threadMutex);
Tcl_ConditionFinalize(&ctrl.condWait);
Tcl_SetObjResult(interp, Tcl_NewLongObj((long)id));
Tcl_SetObjResult(interp, Tcl_NewWideIntObj((Tcl_WideInt)(size_t)id));
return TCL_OK;
}
@@ -560,7 +560,7 @@ ThreadErrorProc(
const char *errorInfo, *argv[3];
char *script;
char buf[TCL_DOUBLE_SPACE+1];
sprintf(buf, "%ld", (long) Tcl_GetCurrentThread());
sprintf(buf, "%" TCL_LL_MODIFIER "d", (Tcl_WideInt)(size_t)Tcl_GetCurrentThread());
errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
if (errorProcString == NULL) {
@@ -677,7 +677,7 @@ TclThreadList(
Tcl_MutexLock(&threadMutex);
for (tsdPtr = threadList ; tsdPtr ; tsdPtr = tsdPtr->nextPtr) {
Tcl_ListObjAppendElement(interp, listPtr,
Tcl_NewLongObj((long) tsdPtr->threadId));
Tcl_NewWideIntObj((Tcl_WideInt)(size_t)tsdPtr->threadId));
}
Tcl_MutexUnlock(&threadMutex);
Tcl_SetObjResult(interp, listPtr);
+3
View File
@@ -2801,6 +2801,7 @@ DisposeTraceResult(
*----------------------------------------------------------------------
*/
#undef Tcl_UntraceVar
void
Tcl_UntraceVar(
Tcl_Interp *interp, /* Interpreter containing variable. */
@@ -2970,6 +2971,7 @@ Tcl_UntraceVar2(
*----------------------------------------------------------------------
*/
#undef Tcl_VarTraceInfo
ClientData
Tcl_VarTraceInfo(
Tcl_Interp *interp, /* Interpreter containing variable. */
@@ -3080,6 +3082,7 @@ Tcl_VarTraceInfo2(
*----------------------------------------------------------------------
*/
#undef Tcl_TraceVar
int
Tcl_TraceVar(
Tcl_Interp *interp, /* Interpreter in which variable is to be
+95 -95
View File
@@ -624,7 +624,7 @@ static const unsigned char groupMap[] = {
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, 15, 3, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 0, 7, 7, 7, 3, 3,
4, 3, 3, 14, 14, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 3, 0,
4, 3, 3, 14, 14, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 3, 17,
0, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
85, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 86, 86, 86, 86, 86,
@@ -792,118 +792,118 @@ static const unsigned char groupMap[] = {
116, 86, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 3, 3,
3, 85, 3, 3, 3, 4, 15, 86, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0,
0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0,
0, 3, 3, 3, 3, 3, 3, 8, 3, 3, 3, 3, 86, 86, 86, 2, 0, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 15, 15, 15, 85, 15, 15, 15, 15, 15,
0, 3, 3, 3, 3, 3, 3, 8, 3, 3, 3, 3, 86, 86, 86, 17, 0, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 15, 15, 15, 85, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0,
0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 15, 0, 0, 0, 0, 0,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0,
0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 15, 0, 0, 0, 0,
0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 86, 86, 86, 116, 116, 116, 116,
86, 86, 116, 116, 116, 0, 0, 0, 0, 116, 116, 86, 116, 116, 116, 116,
116, 116, 86, 86, 86, 0, 0, 0, 0, 14, 0, 0, 0, 3, 3, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 0, 0, 0, 86, 86, 86, 116, 116, 116, 116, 86,
86, 116, 116, 116, 0, 0, 0, 0, 116, 116, 86, 116, 116, 116, 116, 116,
116, 86, 86, 86, 0, 0, 0, 0, 14, 0, 0, 0, 3, 3, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 15,
15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 116, 116, 116, 116, 116, 116,
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 15, 15, 15,
15, 15, 15, 15, 116, 116, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 18, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 116, 116, 116,
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
15, 15, 15, 15, 15, 15, 15, 116, 116, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 18, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 86, 116, 116, 116,
0, 0, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 116, 86, 116, 86, 86, 86, 86, 86, 86, 86,
0, 86, 116, 86, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 116, 116,
116, 116, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 0, 0, 86,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 85, 3, 3, 3, 3, 3,
3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86,
86, 116, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 86, 116,
116, 86, 0, 0, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 116, 86, 116, 86, 86, 86, 86, 86,
86, 86, 0, 86, 116, 86, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 116,
116, 116, 116, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 0,
0, 86, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 85, 3, 3,
3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,
86, 86, 86, 116, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 86, 116,
86, 86, 86, 86, 86, 116, 86, 116, 116, 116, 116, 116, 86, 116, 116,
15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 3, 3, 3, 3, 3, 3, 3, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 86,
86, 86, 86, 86, 86, 86, 86, 86, 14, 14, 14, 14, 14, 14, 14, 14, 14,
0, 0, 0, 86, 86, 116, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 116, 86, 86, 86, 86, 116, 116, 86, 86, 116, 86, 116, 116, 15, 15,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 86, 116, 86, 86, 116, 116, 116, 86, 116, 86, 86, 86, 116, 116,
0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 15, 15, 15, 15, 116, 116, 116,
116, 116, 116, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86, 116, 116,
86, 86, 0, 0, 0, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0,
0, 15, 15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15,
86, 116, 86, 86, 86, 86, 86, 116, 86, 116, 116, 116, 116, 116, 86,
116, 116, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 3, 3, 3, 3, 3, 3, 3, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 86, 86, 86, 86, 86, 86, 86, 86, 86, 14, 14, 14, 14, 14, 14, 14,
14, 14, 0, 0, 0, 86, 86, 116, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 85, 85, 85, 85, 85, 85, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 3, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 116, 86, 86, 86, 86, 86, 86, 86,
15, 15, 15, 15, 86, 15, 15, 15, 15, 116, 116, 86, 15, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
15, 15, 15, 116, 86, 86, 86, 86, 116, 116, 86, 86, 116, 86, 116, 116,
15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 86, 116, 86, 86, 116, 116, 116, 86, 116, 86, 86, 86,
116, 116, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 15, 15, 15, 15, 116,
116, 116, 116, 116, 116, 116, 116, 86, 86, 86, 86, 86, 86, 86, 86,
116, 116, 86, 86, 0, 0, 0, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 0, 0, 0, 15, 15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 85, 85, 85, 85, 85, 85, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 3, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 116, 86, 86, 86, 86, 86,
86, 86, 15, 15, 15, 15, 86, 15, 15, 15, 15, 116, 116, 86, 15, 15, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 85, 85, 85,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 85, 119, 21, 21, 21, 120, 21, 21, 21, 21, 21, 21,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 85, 119, 21, 21, 21, 120, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86,
86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86, 86, 86, 86, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
24, 23, 24, 23, 24, 23, 24, 23, 24, 21, 21, 21, 21, 21, 121, 21, 21,
122, 21, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124,
124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 0, 0, 124, 124, 124,
124, 124, 124, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124,
124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 123, 123,
124, 124, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 123,
0, 0, 124, 124, 124, 124, 124, 124, 0, 0, 21, 123, 21, 123, 21, 123,
21, 123, 0, 124, 0, 124, 0, 124, 0, 124, 123, 123, 123, 123, 123, 123,
123, 123, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 126, 126,
126, 126, 127, 127, 128, 128, 129, 129, 130, 130, 0, 0, 123, 123, 123,
123, 123, 123, 123, 123, 131, 131, 131, 131, 131, 131, 131, 131, 123,
123, 123, 123, 123, 123, 123, 123, 131, 131, 131, 131, 131, 131, 131,
131, 123, 123, 123, 123, 123, 123, 123, 123, 131, 131, 131, 131, 131,
131, 131, 131, 123, 123, 21, 132, 21, 0, 21, 21, 124, 124, 133, 133,
134, 11, 135, 11, 11, 11, 21, 132, 21, 0, 21, 21, 136, 136, 136, 136,
134, 11, 11, 11, 123, 123, 21, 21, 0, 0, 21, 21, 124, 124, 137, 137,
0, 11, 11, 11, 123, 123, 21, 21, 21, 106, 21, 21, 124, 124, 138, 138,
109, 11, 11, 11, 0, 0, 21, 132, 21, 0, 21, 21, 139, 139, 140, 140,
134, 11, 11, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17, 17,
8, 8, 8, 8, 8, 8, 3, 3, 16, 20, 5, 16, 16, 20, 5, 16, 3, 3, 3, 3, 3,
3, 3, 3, 141, 142, 17, 17, 17, 17, 17, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
16, 20, 3, 3, 3, 3, 12, 12, 3, 3, 3, 7, 5, 6, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 7, 3, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 17, 17, 17,
17, 17, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 18, 85, 0, 0, 18, 18,
18, 18, 18, 18, 7, 7, 7, 5, 6, 85, 18, 18, 18, 18, 18, 18, 18, 18,
18, 18, 7, 7, 7, 5, 6, 0, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
86, 86, 111, 111, 111, 111, 86, 111, 111, 111, 86, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 14, 14, 100, 14, 14, 14, 14, 100, 14, 14, 21, 100, 100, 100,
21, 21, 100, 100, 100, 21, 14, 100, 14, 14, 7, 100, 100, 100, 100,
100, 14, 14, 14, 14, 14, 14, 100, 14, 143, 14, 100, 14, 144, 145, 100,
100, 14, 21, 100, 100, 146, 100, 21, 15, 15, 15, 15, 21, 14, 14, 21,
21, 100, 100, 7, 7, 7, 7, 7, 100, 21, 21, 21, 21, 14, 7, 14, 14, 147,
14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
149, 149, 149, 149, 118, 118, 118, 23, 24, 118, 118, 118, 118, 18,
0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 7, 7, 14, 14,
14, 14, 7, 14, 14, 7, 14, 14, 7, 14, 14, 14, 14, 14, 14, 14, 7, 14,
21, 21, 21, 21, 21, 21, 21, 21, 85, 85, 85, 85, 85, 86, 86, 86, 86,
86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 86, 86, 86, 86, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24,
23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 21, 21, 21, 21, 21, 121, 21,
21, 122, 21, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124,
124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 0, 0, 124, 124,
124, 124, 124, 124, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 124,
124, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 123,
123, 124, 124, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123,
123, 0, 0, 124, 124, 124, 124, 124, 124, 0, 0, 21, 123, 21, 123, 21,
123, 21, 123, 0, 124, 0, 124, 0, 124, 0, 124, 123, 123, 123, 123, 123,
123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 126,
126, 126, 126, 127, 127, 128, 128, 129, 129, 130, 130, 0, 0, 123, 123,
123, 123, 123, 123, 123, 123, 131, 131, 131, 131, 131, 131, 131, 131,
123, 123, 123, 123, 123, 123, 123, 123, 131, 131, 131, 131, 131, 131,
131, 131, 123, 123, 123, 123, 123, 123, 123, 123, 131, 131, 131, 131,
131, 131, 131, 131, 123, 123, 21, 132, 21, 0, 21, 21, 124, 124, 133,
133, 134, 11, 135, 11, 11, 11, 21, 132, 21, 0, 21, 21, 136, 136, 136,
136, 134, 11, 11, 11, 123, 123, 21, 21, 0, 0, 21, 21, 124, 124, 137,
137, 0, 11, 11, 11, 123, 123, 21, 21, 21, 106, 21, 21, 124, 124, 138,
138, 109, 11, 11, 11, 0, 0, 21, 132, 21, 0, 21, 21, 139, 139, 140,
140, 134, 11, 11, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17,
17, 8, 8, 8, 8, 8, 8, 3, 3, 16, 20, 5, 16, 16, 20, 5, 16, 3, 3, 3,
3, 3, 3, 3, 3, 141, 142, 17, 17, 17, 17, 17, 2, 3, 3, 3, 3, 3, 3, 3,
3, 3, 16, 20, 3, 3, 3, 3, 12, 12, 3, 3, 3, 7, 5, 6, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 7, 3, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 17, 17,
17, 17, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 85, 0, 0,
18, 18, 18, 18, 18, 18, 7, 7, 7, 5, 6, 85, 18, 18, 18, 18, 18, 18,
18, 18, 18, 18, 7, 7, 7, 5, 6, 0, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86,
86, 86, 86, 86, 111, 111, 111, 111, 86, 111, 111, 111, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 14, 14, 100, 14, 14, 14, 14, 100, 14, 14, 21, 100, 100,
100, 21, 21, 100, 100, 100, 21, 14, 100, 14, 14, 7, 100, 100, 100,
100, 100, 14, 14, 14, 14, 14, 14, 100, 14, 143, 14, 100, 14, 144, 145,
100, 100, 14, 21, 100, 100, 146, 100, 21, 15, 15, 15, 15, 21, 14, 14,
21, 21, 100, 100, 7, 7, 7, 7, 7, 100, 21, 21, 21, 21, 14, 7, 14, 14,
147, 14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
18, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
148, 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
149, 149, 149, 149, 149, 118, 118, 118, 23, 24, 118, 118, 118, 118,
18, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 7, 7, 14,
14, 14, 14, 7, 14, 14, 7, 14, 14, 7, 14, 14, 14, 14, 14, 14, 14, 7,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 14, 14, 7,
14, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 14, 14,
7, 14, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14,
14, 14, 14, 14, 14, 14, 7, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 5, 6, 5, 6, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 14, 14, 14, 14,
14, 14, 14, 5, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+43 -1
View File
@@ -1101,6 +1101,46 @@ Tcl_UtfNcasecmp(
}
return 0;
}
/*
*----------------------------------------------------------------------
*
* Tcl_UtfNcasecmp --
*
* Compare UTF chars of string cs to string ct case insensitively.
* Replacement for strcasecmp in Tcl core, in places where UTF-8 should
* be handled.
*
* Results:
* Return <0 if cs < ct, 0 if cs == ct, or >0 if cs > ct.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
int
TclUtfCasecmp(
CONST char *cs, /* UTF string to compare to ct. */
CONST char *ct) /* UTF string cs is compared to. */
{
while (*cs && *ct) {
Tcl_UniChar ch1, ch2;
cs += TclUtfToUniChar(cs, &ch1);
ct += TclUtfToUniChar(ct, &ch2);
if (ch1 != ch2) {
ch1 = Tcl_UniCharToLower(ch1);
ch2 = Tcl_UniCharToLower(ch2);
if (ch1 != ch2) {
return ch1 - ch2;
}
}
}
return UCHAR(*cs) - UCHAR(*ct);
}
/*
*----------------------------------------------------------------------
@@ -1514,7 +1554,9 @@ Tcl_UniCharIsSpace(
*/
if (((Tcl_UniChar) ch) < ((Tcl_UniChar) 0x80)) {
return isspace(UCHAR(ch)); /* INTL: ISO space */
return TclIsSpaceProc((char) ch);
} else if ((Tcl_UniChar) ch == 0x180e || (Tcl_UniChar) ch == 0x202f) {
return 1;
} else {
return ((SPACE_BITS >> GetCategory(ch)) & 1);
}
+4
View File
@@ -1234,6 +1234,7 @@ TclLookupArrayElement(
*----------------------------------------------------------------------
*/
#undef Tcl_GetVar
const char *
Tcl_GetVar(
Tcl_Interp *interp, /* Command interpreter in which varName is to
@@ -1556,6 +1557,7 @@ Tcl_SetObjCmd(
*----------------------------------------------------------------------
*/
#undef Tcl_SetVar
const char *
Tcl_SetVar(
Tcl_Interp *interp, /* Command interpreter in which varName is to
@@ -2146,6 +2148,7 @@ TclPtrIncrObjVar(
*----------------------------------------------------------------------
*/
#undef Tcl_UnsetVar
int
Tcl_UnsetVar(
Tcl_Interp *interp, /* Command interpreter in which varName is to
@@ -3785,6 +3788,7 @@ TclPtrObjMakeUpvar(
*----------------------------------------------------------------------
*/
#undef Tcl_UpVar
int
Tcl_UpVar(
Tcl_Interp *interp, /* Command interpreter in which varName is to
+2 -2
View File
@@ -325,7 +325,7 @@ proc ::tcl::clock::Initialize {} {
{-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
{-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
{-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
{-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Brasilia
{-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
{-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
{-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
{-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
@@ -3947,7 +3947,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
# Put DST in effect in all years from 1916 to 2099.
for { set y 1916 } { $y < 2099 } { incr y } {
for { set y 1916 } { $y < 2100 } { incr y } {
set startTime [DeterminePosixDSTTime $z start $y]
incr startTime [expr { - wide($stdOffset) }]
set endTime [DeterminePosixDSTTime $z end $y]
Executable → Regular
View File
+25 -13
View File
@@ -11,7 +11,7 @@
package require Tcl 8.4
# Keep this in sync with pkgIndex.tcl and with the install directories in
# Makefiles
package provide http 2.7.11
package provide http 2.7.13
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -107,7 +107,7 @@ proc http::Log {args} {}
proc http::register {proto port command} {
variable urlTypes
set urlTypes($proto) [list $port $command]
set urlTypes([string tolower $proto]) [list $port $command]
}
# http::unregister --
@@ -121,11 +121,12 @@ proc http::register {proto port command} {
proc http::unregister {proto} {
variable urlTypes
if {![info exists urlTypes($proto)]} {
set lower [string tolower $proto]
if {![info exists urlTypes($lower)]} {
return -code error "unsupported url type \"$proto\""
}
set old $urlTypes($proto)
unset urlTypes($proto)
set old $urlTypes($lower)
unset urlTypes($lower)
return $old
}
@@ -388,13 +389,16 @@ proc http::geturl {url args} {
# First, before the colon, is the protocol scheme (e.g. http)
# Second, for HTTP-like protocols, is the authority
# The authority is preceded by // and lasts up to (but not including)
# the following / and it identifies up to four parts, of which only one,
# the host, is required (if an authority is present at all). All other
# parts of the authority (user name, password, port number) are optional.
# the following / or ? and it identifies up to four parts, of which
# only one, the host, is required (if an authority is present at all).
# All other parts of the authority (user name, password, port number)
# are optional.
# Third is the resource name, which is split into two parts at a ?
# The first part (from the single "/" up to "?") is the path, and the
# second part (from that "?" up to "#") is the query. *HOWEVER*, we do
# not need to separate them; we send the whole lot to the server.
# Both, path and query are allowed to be missing, including their
# delimiting character.
# Fourth is the fragment identifier, which is everything after the first
# "#" in the URL. The fragment identifier MUST NOT be sent to the server
# and indeed, we don't bother to validate it (it could be an error to
@@ -429,7 +433,7 @@ proc http::geturl {url args} {
( [^/:\#?]+ ) # <host part of authority>
(?: : (\d+) )? # <port part of authority>
)?
( / [^\#]*)? # <path> (including query)
( [/\?] [^\#]*)? # <path> (including query)
(?: \# (.*) )? # <fragment>
$
}
@@ -472,6 +476,12 @@ proc http::geturl {url args} {
}
}
if {$srvurl ne ""} {
# RFC 3986 allows empty paths (not even a /), but servers
# return 400 if the path in the HTTP request doesn't start
# with / , so add it here if needed.
if {[string index $srvurl 0] ne "/"} {
set srvurl /$srvurl
}
# Check for validity according to RFC 3986, Appendix A
set validityRE {(?xi)
^
@@ -496,12 +506,13 @@ proc http::geturl {url args} {
if {$proto eq ""} {
set proto http
}
if {![info exists urlTypes($proto)]} {
set lower [string tolower $proto]
if {![info exists urlTypes($lower)]} {
unset $token
return -code error "Unsupported URL type \"$proto\""
}
set defport [lindex $urlTypes($proto) 0]
set defcmd [lindex $urlTypes($proto) 1]
set defport [lindex $urlTypes($lower) 0]
set defcmd [lindex $urlTypes($lower) 1]
if {$port eq ""} {
set port $defport
@@ -632,7 +643,8 @@ proc http::Connected { token proto phost srvurl} {
set host [lindex [split $state(socketinfo) :] 0]
set port [lindex [split $state(socketinfo) :] 1]
set defport [lindex $urlTypes($proto) 0]
set lower [string tolower $proto]
set defport [lindex $urlTypes($lower) 0]
# Send data in cr-lf format, but accept any line terminators
+1 -1
View File
@@ -1,4 +1,4 @@
# Tcl package index file, version 1.1
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded http 2.7.11 [list tclPkgSetup $dir http 2.7.11 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
package ifneeded http 2.7.13 [list tclPkgSetup $dir http 2.7.13 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+1 -1
View File
@@ -16,7 +16,7 @@
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
package require -exact Tcl 8.5.14
package require -exact Tcl 8.5.15
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
+22 -17
View File
@@ -13,7 +13,7 @@
package require Tcl 8.5
# When the version number changes, be sure to update the pkgIndex.tcl file,
# and the installation directory in the Makefiles.
package provide msgcat 1.5.1
package provide msgcat 1.5.2
namespace eval msgcat {
namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \
@@ -541,8 +541,11 @@ proc msgcat::Init {} {
# settings, or fall back on locale of "C".
#
# First check registry value LocalName present from Windows Vista
# which contains the local string as RFC5646, composed of:
# On Vista and later:
# HCU/Control Panel/Desktop : PreferredUILanguages is for language packs,
# HCU/Control Pannel/International : localName is the default locale.
#
# They contain the local string as RFC5646, composed of:
# [a-z]{2,3} : language
# -[a-z]{4} : script (optional, translated by table Latn->latin)
# -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used)
@@ -550,23 +553,25 @@ proc msgcat::Init {} {
# Those are translated to local strings.
# Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es
#
set key {HKEY_CURRENT_USER\Control Panel\International}
if {![catch {registry get $key LocaleName} localeName]
&& [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
[string tolower $localeName] match locale script territory]} {
if {"" ne $territory} {
append locale _ $territory
}
set modifierDict [dict create latn latin cyrl cyrillic]
if {[dict exists $modifierDict $script]} {
append locale @ [dict get $modifierDict $script]
}
if {![catch {mclocale [ConvertLocale $locale]}]} {
return
foreach key {{HKEY_CURRENT_USER\Control Panel\Desktop} {HKEY_CURRENT_USER\Control Panel\International}}\
value {PreferredUILanguages localeName} {
if {![catch {registry get $key $value} localeName]
&& [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
[string tolower $localeName] match locale script territory]} {
if {"" ne $territory} {
append locale _ $territory
}
set modifierDict [dict create latn latin cyrl cyrillic]
if {[dict exists $modifierDict $script]} {
append locale @ [dict get $modifierDict $script]
}
if {![catch {mclocale [ConvertLocale $locale]}]} {
return
}
}
}
# then check key locale which contains a numerical language ID
# then check value locale which contains a numerical language ID
if {[catch {
set locale [registry get $key "locale"]
}]} {
+1 -1
View File
@@ -1,2 +1,2 @@
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded msgcat 1.5.1 [list source [file join $dir msgcat.tcl]]
package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]]
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File

Some files were not shown because too many files have changed in this diff Show More