Tcl Source Code

Check-in [d9c41ba6ee]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

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

Overview
Comment:merge 8.7
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tip-445-api-fix
Files: files | file ages | folders
SHA3-256: d9c41ba6ee9757503795ffd052f11c31d218a552a40cb1cd63b8eee9d5ca029d
User & Date: dgp 2019-04-03 17:20:38
Context
2019-05-17
14:42
merge 8.7 Leaf check-in: b948d2dca4 user: dgp tags: tip-445-api-fix
2019-04-03
17:20
merge 8.7 check-in: d9c41ba6ee user: dgp tags: tip-445-api-fix
2019-04-02
18:23
merge-mark check-in: 5b3cc9e2a9 user: jan.nijtmans tags: core-8-branch
2019-03-18
15:25
merge 8.7 check-in: 9c1a58d079 user: dgp tags: tip-445-api-fix
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to .fossil-settings/ignore-glob.

    22     22   */libtcl.vfs
    23     23   */libtcl_*.zip
    24     24   html
    25     25   libtommath/bn.ilg
    26     26   libtommath/bn.ind
    27     27   libtommath/pretty.build
    28     28   libtommath/tommath.src
           29  +libtommath/*.log
    29     30   libtommath/*.pdf
    30     31   libtommath/*.pl
    31     32   libtommath/*.sh
           33  +libtommath/doc/*
    32     34   libtommath/tombc/*
    33     35   libtommath/pre_gen/*
    34     36   libtommath/pics/*
    35     37   libtommath/mtest/*
    36     38   libtommath/logs/*
    37     39   libtommath/etc/*
    38     40   libtommath/demo/*

Changes to .travis.yml.

    86     86         compiler: gcc-7
    87     87         addons:
    88     88           apt:
    89     89             sources:
    90     90               - ubuntu-toolchain-r-test
    91     91             packages:
    92     92               - g++-7
           93  +      env:
           94  +        - BUILD_DIR=unix
           95  +        - CFGOPT=CFLAGS=-DTCL_UTF_MAX=3
           96  +    - os: linux
           97  +      dist: xenial
           98  +      compiler: gcc-7
           99  +      addons:
          100  +        apt:
          101  +          sources:
          102  +            - ubuntu-toolchain-r-test
          103  +          packages:
          104  +            - g++-7
    93    105         env:
    94    106           - BUILD_DIR=unix
    95    107           - CFGOPT=CFLAGS=-DTCL_NO_DEPRECATED=1
    96    108       - os: osx
    97    109         osx_image: xcode8
    98    110         env:
    99    111           - BUILD_DIR=unix
................................................................................
   158    170             packages:
   159    171               - gcc-mingw-w64-base
   160    172               - binutils-mingw-w64-i686
   161    173               - gcc-mingw-w64-i686
   162    174               - gcc-mingw-w64
   163    175               - gcc-multilib
   164    176               - wine
          177  +      env:
          178  +        - BUILD_DIR=win
          179  +        - CFGOPT="--host=i686-w64-mingw32 CFLAGS=-DTCL_UTF_MAX=3"
          180  +        - NO_DIRECT_TEST=1
          181  +    - os: linux
          182  +      dist: xenial
          183  +      compiler: i686-w64-mingw32-gcc
          184  +      addons:
          185  +        apt:
          186  +          packages:
          187  +            - gcc-mingw-w64-base
          188  +            - binutils-mingw-w64-i686
          189  +            - gcc-mingw-w64-i686
          190  +            - gcc-mingw-w64
          191  +            - gcc-multilib
          192  +            - wine
   165    193         env:
   166    194           - BUILD_DIR=win
   167    195           - CFGOPT="--host=i686-w64-mingw32 CFLAGS=-DTCL_NO_DEPRECATED=1"
   168    196           - NO_DIRECT_TEST=1
   169    197   # Test with mingw-w64 (64 bit)
   170    198       - os: linux
   171    199         dist: xenial
................................................................................
   194    222               - gcc-mingw-w64
   195    223               - wine
   196    224         env:
   197    225           - BUILD_DIR=win
   198    226           - CFGOPT="--host=x86_64-w64-mingw32 --enable-64bit CFLAGS=-DTCL_UTF_MAX=6"
   199    227           - NO_DIRECT_TEST=1
   200    228       - os: linux
          229  +      dist: xenial
          230  +      compiler: x86_64-w64-mingw32-gcc
          231  +      addons:
          232  +        apt:
          233  +          packages:
          234  +            - gcc-mingw-w64-base
          235  +            - binutils-mingw-w64-x86-64
          236  +            - gcc-mingw-w64-x86-64
          237  +            - gcc-mingw-w64
          238  +            - wine
          239  +      env:
          240  +        - BUILD_DIR=win
          241  +        - CFGOPT="--host=x86_64-w64-mingw32 --enable-64bit CFLAGS=-DTCL_UTF_MAX=3"
          242  +        - NO_DIRECT_TEST=1
          243  +    - os: linux
   201    244         dist: xenial
   202    245         compiler: x86_64-w64-mingw32-gcc
   203    246         addons:
   204    247           apt:
   205    248             packages:
   206    249               - gcc-mingw-w64-base
   207    250               - binutils-mingw-w64-x86-64

Changes to doc/Tcl.n.

    24     24   (see below) unless quoted.
    25     25   .IP "[2] \fBEvaluation.\fR"
    26     26   A command is evaluated in two steps.
    27     27   First, the Tcl interpreter breaks the command into \fIwords\fR
    28     28   and performs substitutions as described below.
    29     29   These substitutions are performed in the same way for all
    30     30   commands.
    31         -Secondly, the first word is used to locate a command procedure to
    32         -carry out the command, then all of the words of the command are
    33         -passed to the command procedure.
    34         -The command procedure is free to interpret each of its words
           31  +Secondly, the first word is used to locate a routine to
           32  +carry out the command, and the remaining words of the command are
           33  +passed to that routine.
           34  +The routine is free to interpret each of its words
    35     35   in any way it likes, such as an integer, variable name, list,
    36     36   or Tcl script.
    37     37   Different commands interpret their words differently.
    38     38   .IP "[3] \fBWords.\fR"
    39     39   Words of a command are separated by white space (except for
    40     40   newlines, which are command separators).
    41     41   .IP "[4] \fBDouble quotes.\fR"

Changes to doc/ToUpper.3.

    74     74   \fBTcl_UtfToLower\fR is the same as \fBTcl_UtfToUpper\fR except it
    75     75   turns each character in the string into its lower-case equivalent.
    76     76   .PP
    77     77   \fBTcl_UtfToTitle\fR is the same as \fBTcl_UtfToUpper\fR except it
    78     78   turns the first character in the string into its title-case equivalent
    79     79   and all following characters into their lower-case equivalents.
    80     80   
    81         -.SH BUGS
    82         -.PP
    83         -At this time, the case conversions are only defined for the ISO8859-1
    84         -characters.  Unicode characters above 0x00ff are not modified by these
    85         -routines.
    86         -
    87     81   .SH KEYWORDS
    88     82   utf, unicode, toupper, tolower, totitle, case

Changes to doc/Utf.3.

   129    129   .PP
   130    130   \fBTCL_UTF_MAX\fR is the maximum number of bytes that it takes to
   131    131   represent one Unicode character in the UTF-8 representation.
   132    132   .PP
   133    133   \fBTcl_UniCharToUtf\fR stores the character \fIch\fR as a UTF-8 string
   134    134   in starting at \fIbuf\fR.  The return value is the number of bytes stored
   135    135   in \fIbuf\fR. If ch is a high surrogate (range U+D800 - U+DBFF), then
   136         -the return value will be 0 and nothing will be stored. If you still
   137         -want to produce UTF-8 output for it (even though knowing it's an illegal
   138         -code-point on its own), just call \fBTcl_UniCharToUtf\fR again using ch = -1.
          136  +the return value will be 1 and a single byte in the range 0xF0 - 0xF4
          137  +will be stored. If you still want to produce UTF-8 output for it (even
          138  +though knowing it's an illegal code-point on its own), just call
          139  +\fBTcl_UniCharToUtf\fR again specifying ch = -1.
   139    140   .PP
   140    141   \fBTcl_UtfToUniChar\fR reads one UTF-8 character starting at \fIsrc\fR
   141    142   and stores it as a Tcl_UniChar in \fI*chPtr\fR.  The return value is the
   142    143   number of bytes read from \fIsrc\fR.  The caller must ensure that the
   143    144   source buffer is long enough such that this routine does not run off the
   144    145   end and dereference non-existent or random memory; if the source buffer
   145    146   is known to be null-terminated, this will not happen.  If the input is

Changes to doc/array.n.

    36     36   \fBarray nextelement\fR will not indicate whether the search
    37     37   has been completed.
    38     38   .TP
    39     39   \fBarray default \fIsubcommand arrayName args...\fR
    40     40   .VS TIP508
    41     41   Manages the default value of the array. Arrays initially have no default
    42     42   value, but this command allows you to set one; the default value will be
    43         -returned when reading from an element of the array \farrayName\fR if the read
           43  +returned when reading from an element of the array \fIarrayName\fR if the read
    44     44   would otherwise result in an error. Note that this may cause the \fBappend\fR,
    45     45   \fBdict\fR, \fBincr\fR and \fBlappend\fR commands to change their behavior in
    46     46   relation to non-existing array elements.
    47     47   .RS
    48     48   .PP
    49     49   The \fIsubcommand\fR argument controls what exact operation will be performed
    50     50   on the default value of \fIarrayName\fR. Supported \fIsubcommand\fRs are:

Changes to doc/cookiejar.n.

    92     92   \fB\-vacuumtrigger \fIdeletionCount\fR
    93     93   .
    94     94   A count of the number of persistent cookie deletions to go between vacuuming
    95     95   the database.
    96     96   .RE
    97     97   .PP
    98     98   Cookie jar instances may be made with any of the standard TclOO instance
    99         -creation methods (\fBcreate\fR or \fRnew\fR).
           99  +creation methods (\fBcreate\fR or \fBnew\fR).
   100    100   .TP
   101    101   \fB::http::cookiejar new\fR ?\fIfilename\fR?
   102    102   .
   103    103   If a \fIfilename\fR argument is provided, it is the name of a file containing
   104    104   an SQLite database that will contain the persistent cookies maintained by the
   105    105   cookie jar; the database will be created if the file does not already
   106    106   exist. If \fIfilename\fR is not supplied, the database will be held entirely within

Changes to doc/define.n.

    48     48   This creates a class method, or (if \fIargList\fR and \fIbodyScript\fR are
    49     49   omitted) promotes an existing method on the class object to be a class
    50     50   method. The \fIname\fR, \fIargList\fR and \fIbodyScript\fR arguments are as in
    51     51   the \fBmethod\fR definition, below.
    52     52   .RS
    53     53   .PP
    54     54   Class methods can be called on either the class itself or on the instances of
    55         -that class. When they are called, the current object (see the \fBself\R and
           55  +that class. When they are called, the current object (see the \fBsel\fR and
    56     56   \fBmy\fR commands) is the class on which they are called or the class of the
    57     57   instance on which they are called, depending on whether they are called on the
    58     58   class or an instance of the class, respectively. If called on a subclass or
    59     59   instance of the subclass, the current object is the subclass.
    60     60   .PP
    61     61   In a private definition context, the methods as invoked on classes are
    62     62   \fInot\fR private, but the methods as invoked on instances of classes are

Changes to doc/expr.n.

   122    122   .
   123    123   Unary minus, unary plus, bit-wise NOT, logical NOT.  These operators
   124    124   may only be applied to numeric operands, and bit-wise NOT may only be
   125    125   applied to integers.
   126    126   .TP 20
   127    127   \fB**\fR
   128    128   .
   129         -Exponentiation.  Valid for numeric operands.
          129  +Exponentiation.  Valid for numeric operands.  The maximum exponent value
          130  +that Tcl can handle if the first number is an integer > 1 is 268435455.
   130    131   .TP 20
   131    132   \fB*\0\0/\0\0%\fR
   132    133   .
   133    134   Multiply and divide, which are valid for numeric operands, and remainder, which
   134    135   is valid for integers.  The remainder, an absolute value smaller than the
   135    136   absolute value of the divisor, has the same sign as the divisor.
   136    137   .RS

Changes to doc/info.n.

     9      9   '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
    10     10   '\"
    11     11   .TH info n 8.4 Tcl "Tcl Built-In Commands"
    12     12   .so man.macros
    13     13   .BS
    14     14   '\" Note:  do not modify the .SH NAME line immediately below!
    15     15   .SH NAME
    16         -info \- Return information about the state of the Tcl interpreter
           16  +info \- Information about the state of the Tcl interpreter
    17     17   .SH SYNOPSIS
    18     18   \fBinfo \fIoption \fR?\fIarg arg ...\fR?
    19     19   .BE
    20     20   .SH DESCRIPTION
    21     21   .PP
    22         -This command provides information about various internals of the Tcl
    23         -interpreter.
    24         -The legal \fIoption\fRs (which may be abbreviated) are:
           22  +Available commands:
    25     23   .TP
    26     24   \fBinfo args \fIprocname\fR
    27     25   .
    28         -Returns a list containing the names of the arguments to procedure
    29         -\fIprocname\fR, in order.  \fIProcname\fR must be the name of a
    30         -Tcl command procedure.
           26  +Returns the names of the parameters to the procedure named \fIprocname\fR.
    31     27   .TP
    32     28   \fBinfo body \fIprocname\fR
    33     29   .
    34         -Returns the body of procedure \fIprocname\fR.  \fIProcname\fR must be
    35         -the name of a Tcl command procedure.
           30  +Returns the body of the procedure named \fIprocname\fR.
    36     31   .TP
    37     32   \fBinfo class\fI subcommand class\fR ?\fIarg ...\fR
    38     33   .
    39         -Returns information about the class, \fIclass\fR. The \fIsubcommand\fRs are
    40         -described in \fBCLASS INTROSPECTION\fR below.
           34  +Returns information about the class named \fIclass\fR.
           35  +See \fBCLASS INTROSPECTION\fR below.
    41     36   .TP
    42     37   \fBinfo cmdcount\fR
    43     38   .
    44         -Returns a count of the total number of commands that have been invoked
    45         -in this interpreter.
           39  +Returns the total number of commands evaluated in this interpreter.
    46     40   .TP
    47     41   \fBinfo cmdtype \fIcommandName\fR
    48     42   .VS TIP426
    49         -Returns a description of the kind of command named by \fIcommandName\fR.  The
    50         -supported types are:
           43  +Returns a the type of the command named \fIcommandName\fR.
           44  +Built-in types are:
    51     45   .RS
    52     46   .IP \fBalias\fR
    53         -Indicates that \fIcommandName\fR was created by \fBinterp alias\fR. Note that
    54         -safe interpreters can only see a subset of aliases (specifically those between
    55         -two commands within themselves).
           47  +\fIcommandName\fR was created by \fBinterp alias\fR.
           48  +In a safe interpreter an alias is only visible if both the alias and the
           49  +target are visible.
    56     50   .IP \fBcoroutine\fR
    57         -Indicates that \fIcommandName\fR was created by \fBcoroutine\fR.
           51  +\fIcommandName\fR was created by \fBcoroutine\fR.
    58     52   .IP \fBensemble\fR
    59         -Indicates that \fIcommandName\fR was created by \fBnamespace ensemble\fR.
           53  +\fIcommandName\fR was created by \fBnamespace ensemble\fR.
    60     54   .IP \fBimport\fR
    61         -Indicates that \fIcommandName\fR was created by \fBnamespace import\fR.
           55  +\fIcommandName\fR was created by \fBnamespace import\fR.
    62     56   .IP \fBnative\fR
    63         -Indicates that \fIcommandName\fR was created by the \fBTcl_CreateObjProc\fR
           57  +\fIcommandName\fR was created by the \fBTcl_CreateObjProc\fR
    64     58   interface directly without further registration of the type of command.
    65     59   .IP \fBobject\fR
    66         -Indicates that \fIcommandName\fR is the public command that represents an
           60  +\fIcommandName\fR is the public command that represents an
    67     61   instance of \fBoo::object\fR or one of its subclasses.
    68     62   .IP \fBprivateObject\fR
    69         -Indicates that \fIcommandName\fR is the private command (\fBmy\fR by default)
           63  +\fIcommandName\fR is the private command, \fBmy\fR by default,
    70     64   that represents an instance of \fBoo::object\fR or one of its subclasses.
    71     65   .IP \fBproc\fR
    72         -Indicates that \fIcommandName\fR was created by \fBproc\fR.
           66  +\fIcommandName\fR was created by \fBproc\fR.
    73     67   .IP \fBslave\fR
    74         -Indicates that \fIcommandName\fR was created by \fBinterp create\fR.
           68  +\fIcommandName\fR was created by \fBinterp create\fR.
    75     69   .IP \fBzlibStream\fR
    76         -Indicates that \fIcommandName\fR was created by \fBzlib stream\fR.
           70  +\fIcommandName\fR was created by \fBzlib stream\fR.
    77     71   .PP
    78         -There may be other registered types as well; this is a set that is extensible
    79         -at the implementation level with \fBTcl_RegisterCommandTypeName\fR.
           72  +Other types may be also registered as well.  See \fBTcl_RegisterCommandTypeName\fR.
    80     73   .RE
    81     74   .VE TIP426
    82     75   .TP
    83     76   \fBinfo commands \fR?\fIpattern\fR?
    84     77   .
    85         -If \fIpattern\fR is not specified,
    86         -returns a list of names of all the Tcl commands visible
    87         -(i.e. executable without using a qualified name) to the current namespace,
    88         -including both the built-in commands written in C and
    89         -the command procedures defined using the \fBproc\fR command.
    90         -If \fIpattern\fR is specified,
    91         -only those names matching \fIpattern\fR are returned.
    92         -Matching is determined using the same rules as for \fBstring match\fR.
    93         -\fIpattern\fR can be a qualified name like \fBFoo::print*\fR.
    94         -That is, it may specify a particular namespace
    95         -using a sequence of namespace names separated by double colons (\fB::\fR),
    96         -and may have pattern matching special characters
    97         -at the end to specify a set of commands in that namespace.
    98         -If \fIpattern\fR is a qualified name,
    99         -the resulting list of command names has each one qualified with the name
   100         -of the specified namespace, and only the commands defined in the named
   101         -namespace are returned.
   102         -.\" Technically, most of this hasn't changed; that's mostly just the
   103         -.\" way it always worked. Hardly anyone knew that though.
           78  +Returns the names of all commands visible in the current namespace.  If
           79  +\fIpattern\fR is given, returns only those names that match according to
           80  +\fBstring match\fR.  Only the last component of \fIpattern\fR is a pattern.
           81  +Other components identify a namespace.  See \fBNAMESPACE RESOLUTION\fR in the
           82  +\fBnamespace\fR(n) documentation.
   104     83   .TP
   105     84   \fBinfo complete \fIcommand\fR
   106     85   .
   107         -Returns 1 if \fIcommand\fR is a complete Tcl command in the sense of
   108         -having no unclosed quotes, braces, brackets or array element names.
   109         -If the command does not appear to be complete then 0 is returned.
   110         -This command is typically used in line-oriented input environments
   111         -to allow users to type in commands that span multiple lines;  if the
   112         -command is not complete, the script can delay evaluating it until additional
   113         -lines have been typed to complete the command.
           86  +Returns 1 if \fIcommand\fR is a complete command, and \fB0\fR otherwise.
           87  +Typically used in line-oriented input environments
           88  +to allow users to type in commands that span multiple lines.
   114     89   .TP
   115     90   \fBinfo coroutine\fR
   116     91   .
   117         -Returns the name of the currently executing \fBcoroutine\fR, or the empty
   118         -string if either no coroutine is currently executing, or the current coroutine
   119         -has been deleted (but has not yet returned or yielded since deletion).
           92  +Returns the name of the current \fBcoroutine\fR, or the empty
           93  +string if there is no current coroutine or the current coroutine
           94  +has been deleted.
   120     95   .TP
   121         -\fBinfo default \fIprocname arg varname\fR
           96  +\fBinfo default \fIprocname parameter varname\fR
   122     97   .
   123         -\fIProcname\fR must be the name of a Tcl command procedure and \fIarg\fR
   124         -must be the name of an argument to that procedure.  If \fIarg\fR
   125         -does not have a default value then the command returns \fB0\fR.
   126         -Otherwise it returns \fB1\fR and places the default value of \fIarg\fR
   127         -into variable \fIvarname\fR.
           98  +If the parameter \fIparameter\fR for the procedure named \fIprocname\fR has a
           99  +default value, stores that value in \fIvarname\fR and returns \fB1\fR.
          100  +Otherwise, returns \fB0\fR.
   128    101   .TP
   129    102   \fBinfo errorstack \fR?\fIinterp\fR?
   130    103   .
   131         -Returns, in a form that is programmatically easy to parse, the function names
   132         -and arguments at each level from the call stack of the last error in the given
   133         -\fIinterp\fR, or in the current one if not specified.
          104  +Returns a description of the active command at each level for the
          105  +last error in the current interpreter, or in the interpreter named
          106  +\fIinterp\fR if given.
   134    107   .RS
   135    108   .PP
   136         -This form is an even-sized list alternating tokens and parameters. Tokens are
          109  +The description is a dictionary of tokens and parameters. Tokens are
   137    110   currently either \fBCALL\fR, \fBUP\fR, or \fBINNER\fR, but other values may be
   138         -introduced in the future. \fBCALL\fR indicates a procedure call, and its
          111  +introduced in the future. \fBCALL\fR indicates a command call, and its
   139    112   parameter is the corresponding \fBinfo level\fR \fB0\fR. \fBUP\fR indicates a
   140    113   shift in variable frames generated by \fBuplevel\fR or similar, and applies to
   141    114   the previous \fBCALL\fR item. Its parameter is the level offset. \fBINNER\fR
   142    115   identifies the
   143    116   .QW "inner context" ,
   144    117   which is the innermost atomic command or bytecode instruction that raised the
   145    118   error, along with its arguments when available. While \fBCALL\fR and \fBUP\fR
   146         -allow to follow complex call paths, \fBINNER\fR homes in on the offending
   147         -operation in the innermost procedure call, even going to sub-expression
          119  +provide a trail of the call path, \fBINNER\fR provides details of the offending
          120  +operation in the innermost procedure call, even to sub-expression
   148    121   granularity.
   149    122   .PP
   150    123   This information is also present in the \fB\-errorstack\fR entry of the
   151    124   options dictionary returned by 3-argument \fBcatch\fR; \fBinfo errorstack\fR
   152    125   is a convenient way of retrieving it for uncaught errors at top-level in an
   153         -interactive \fBtclsh\fR.
          126  +interactive \fBinterpreter\fR.
   154    127   .RE
   155    128   .TP
   156    129   \fBinfo exists \fIvarName\fR
   157    130   .
   158         -Returns \fB1\fR if the variable named \fIvarName\fR exists in the
   159         -current context (either as a global or local variable) and has been
   160         -defined by being given a value, returns \fB0\fR otherwise.
          131  +Returns \fB1\fR if a variable named \fIvarName\fR is visible and has been
          132  +defined, and \fB0\fR otherwise.
   161    133   .TP
   162         -\fBinfo frame\fR ?\fInumber\fR?
          134  +\fBinfo frame\fR ?\fIdepth\fR?
   163    135   .
   164         -This command provides access to all frames on the stack, even those
   165         -hidden from \fBinfo level\fR. If \fInumber\fR is not specified, this
   166         -command returns a number giving the frame level of the command. This
   167         -is 1 if the command is invoked at top-level. If \fInumber\fR is
   168         -specified, then the result is a dictionary containing the location
   169         -information for the command at the \fInumber\fRed level on the stack.
          136  +Returns the depth of the call to \fBinfo frame\fR itself.  Otherwise, returns a
          137  +dictionary describing the active command at the \fIdepth\fR, which counts all
          138  +commands visible to \fBinfo level\fR, plus commands that don't create a new
          139  +level, such as \fBeval\fR, \fBsource\fR, or \fIuplevel\fR. The frame depth is
          140  +always greater than the current level.
   170    141   .RS
   171    142   .PP
   172         -If \fInumber\fR is positive (> 0) then it selects a particular stack
   173         -level (1 refers to the outer-most active command, 2 to the command it
   174         -called, and so on, up to the current frame level which refers to
   175         -\fBinfo frame\fR itself); otherwise it gives a level relative to the
   176         -current command (0 refers to the current command, i.e., \fBinfo
   177         -frame\fR itself, -1 to its caller, and so on).
          143  +If \fIdepth\fR is greater than \fB0\fR it is the frame at that depth.  Otherwise
          144  +it is the number of frames up from the current frame.
   178    145   .PP
   179         -This is similar to how \fBinfo level\fR works, except that this
   180         -subcommand reports all frames, like \fBsource\fRd scripts,
   181         -\fBeval\fRs, \fBuplevel\fRs, etc.
   182         -.PP
   183         -Note that for nested commands, like
          146  +As with \fBinfo level\fR and error traces, for nested commands like
   184    147   .QW "foo [bar [x]]" ,
   185    148   only
   186    149   .QW x
   187         -will be seen by an \fBinfo frame\fR invoked within
          150  +is seen by \fBinfo frame\fR invoked within
   188    151   .QW x .
   189         -This is the same as for \fBinfo level\fR and error stack traces.
   190    152   .PP
   191         -The result dictionary may contain the keys listed below, with the
   192         -specified meanings for their values:
          153  +The dictionary may contain the following keys:
   193    154   .TP
   194    155   \fBtype\fR
   195    156   .
   196         -This entry is always present and describes the nature of the location
   197         -for the command. The recognized values are \fBsource\fR, \fBproc\fR,
          157  +Always present.  Possible values are \fBsource\fR, \fBproc\fR,
   198    158   \fBeval\fR, and \fBprecompiled\fR.
   199    159   .RS
   200    160   .TP
   201    161   \fBsource\fR\0\0\0\0\0\0\0\0
   202    162   .
   203         -means that the command is found in a script loaded by the \fBsource\fR
          163  +A script loaded via the \fBsource\fR
   204    164   command.
   205    165   .TP
   206    166   \fBproc\fR\0\0\0\0\0\0\0\0
   207    167   .
   208         -means that the command is found in dynamically created procedure body.
          168  +The body of a procedure that could not be traced back to a
          169  +line in a particular script.
   209    170   .TP
   210    171   \fBeval\fR\0\0\0\0\0\0\0\0
   211    172   .
   212         -means that the command is executed by \fBeval\fR or \fBuplevel\fR.
          173  +The body of a script provided to \fBeval\fR or \fBuplevel\fR.
   213    174   .TP
   214    175   \fBprecompiled\fR\0\0\0\0\0\0\0\0
   215    176   .
   216         -means that the command is found in a pre-compiled script (loadable by
   217         -the package \fBtbcload\fR), and no further information will be
   218         -available.
          177  +A pre-compiled script (loadable by the package
          178  +\fBtbcload\fR), and no further information is available.
   219    179   .RE
   220    180   .TP
   221    181   \fBline\fR
   222    182   .
   223         -This entry provides the number of the line the command is at inside of
   224         -the script it is a part of. This information is not present for type
   225         -\fBprecompiled\fR. For type \fBsource\fR this information is counted
   226         -relative to the beginning of the file, whereas for the last two types
   227         -the line is counted relative to the start of the script.
          183  +The line number of of the command inside its script.  Not available for
          184  +\fBprecompiled\fR commands.  When the type is \fBsource\fR, the line number is
          185  +relative to the beginning of the file, whereas for the last two types it is
          186  +relative to the start of the script.
   228    187   .TP
   229    188   \fBfile\fR
   230    189   .
   231         -This entry is present only for type \fBsource\fR. It provides the
   232         -normalized path of the file the command is in.
          190  +For type \fBsource\fR, provides the normalized path of the file that contains
          191  +the command.
   233    192   .TP
   234    193   \fBcmd\fR
   235    194   .
   236         -This entry provides the string representation of the command. This is
   237         -usually the unsubstituted form, however for commands which are a
   238         -canonically-constructed list (e.g., as produced by the \fBlist\fR command)
   239         -executed by \fBeval\fR it is the substituted form as they have no other
   240         -string representation. Care is taken that the canonicality property of
   241         -the latter is not spoiled.
          195  +The command before substitutions were performed.
   242    196   .TP
   243    197   \fBproc\fR
   244    198   .
   245         -This entry is present only if the command is found in the body of a
   246         -regular Tcl procedure. It then provides the name of that procedure.
          199  +For type \fBprod\fR, the name of the procedure containing the command.
   247    200   .TP
   248    201   \fBlambda\fR
   249    202   .
   250         -This entry is present only if the command is found in the body of an
   251         -anonymous Tcl procedure, i.e. a lambda. It then provides the entire
   252         -definition of the lambda in question.
          203  +For a command in a script evaluated as the body of an unnamed routine via the
          204  +\fBapply\fR command, the definition of that routine.
   253    205   .TP
   254    206   \fBlevel\fR
   255    207   .
   256         -This entry is present only if the queried frame has a corresponding
   257         -frame returned by \fBinfo level\fR. It provides the index of this
   258         -frame, relative to the current level (0 and negative numbers).
          208  +For a frame that corresponds to a level, (to be determined).
   259    209   .PP
   260         -A thing of note is that for procedures statically defined in files the
   261         -locations of commands in their bodies will be reported with type
   262         -\fBsource\fR and absolute line numbers, and not as type
   263         -\fBproc\fR. The same is true for procedures nested in statically
   264         -defined procedures, and literal eval scripts in files or statically
   265         -defined procedures.
          210  +When a command can be traced to its literal definition in some script, e.g.
          211  +procedures nested in statically defined procedures, and literal eval scripts in
          212  +files or statically defined procedures, its type is \fBsource\fR and its
          213  +location is the absolute line number in the script.  Otherwise, its type is
          214  +\fBproc\fR and its location is its line number within the body of the
          215  +procedure.
   266    216   .PP
   267    217   In contrast, procedure definitions and \fBeval\fR within a dynamically
   268    218   \fBeval\fRuated environment count line numbers relative to the start of
   269    219   their script, even if they would be able to count relative to the
   270    220   start of the outer dynamic script. That type of number usually makes
   271    221   more sense.
   272    222   .PP
   273         -A different way of describing this behaviour is that file based
          223  +A different way of describing this behaviour is that file-based
   274    224   locations are tracked as deeply as possible, and where this is not
   275    225   possible the lines are counted based on the smallest possible
   276    226   \fBeval\fR or procedure body, as that scope is usually easier to find
   277    227   than any dynamic outer scope.
   278    228   .PP
   279    229   The syntactic form \fB{*}\fR is handled like \fBeval\fR. I.e. if it
   280    230   is given a literal list argument the system tracks the line number
   281    231   within the list words as well, and otherwise all line numbers are
   282    232   counted relative to the start of each word (smallest scope)
   283    233   .RE
   284    234   .TP
   285    235   \fBinfo functions \fR?\fIpattern\fR?
   286    236   .
   287         -If \fIpattern\fR is not specified, returns a list of all the math
          237  +If \fIpattern\fR is not given, returns a list of all the math
   288    238   functions currently defined.
   289         -If \fIpattern\fR is specified, only those functions whose name matches
   290         -\fIpattern\fR are returned.  Matching is determined using the same
   291         -rules as for \fBstring match\fR.
          239  +If \fIpattern\fR is given, returns only those names that match
          240  +\fIpattern\fR according to \fBstring match\fR.
   292    241   .TP
   293    242   \fBinfo globals \fR?\fIpattern\fR?
   294    243   .
   295         -If \fIpattern\fR is not specified, returns a list of all the names
          244  +If \fIpattern\fR is not given, returns a list of all the names
   296    245   of currently-defined global variables.
   297    246   Global variables are variables in the global namespace.
   298         -If \fIpattern\fR is specified, only those names matching \fIpattern\fR
          247  +If \fIpattern\fR is given, only those names matching \fIpattern\fR
   299    248   are returned.  Matching is determined using the same rules as for
   300    249   \fBstring match\fR.
   301    250   .TP
   302    251   \fBinfo hostname\fR
   303    252   .
   304         -Returns the name of the computer on which this invocation is being
   305         -executed.
   306         -Note that this name is not guaranteed to be the fully qualified domain
   307         -name of the host.  Where machines have several different names (as is
          253  +Returns the name of the current host.
          254  +
          255  +This name is not guaranteed to be the fully-qualified domain
          256  +name of the host.  Where machines have several different names, as is
   308    257   common on systems with both TCP/IP (DNS) and NetBIOS-based networking
   309         -installed,) it is the name that is suitable for TCP/IP networking that
          258  +installed, it is the name that is suitable for TCP/IP networking that
   310    259   is returned.
   311    260   .TP
   312         -\fBinfo level\fR ?\fInumber\fR?
          261  +\fBinfo level\fR ?\fIlevel\fR?
   313    262   .
   314         -If \fInumber\fR is not specified, this command returns a number
   315         -giving the stack level of the invoking procedure, or 0 if the
   316         -command is invoked at top-level.  If \fInumber\fR is specified,
   317         -then the result is a list consisting of the name and arguments for the
   318         -procedure call at level \fInumber\fR on the stack.  If \fInumber\fR
   319         -is positive then it selects a particular stack level (1 refers
   320         -to the top-most active procedure, 2 to the procedure it called, and
   321         -so on); otherwise it gives a level relative to the current level
   322         -(0 refers to the current procedure, -1 to its caller, and so on).
   323         -See the \fBuplevel\fR command for more information on what stack
   324         -levels mean.
          263  +If \fInumber\fR is not given, the level this routine was called from.
          264  +Otherwise returns the complete command active at the given level.  If
          265  +\fInumber\fR is greater than \fB0\fR, it is the desired level.  Otherwise, it
          266  +is \fInumber\fR levels up from the current level.  A complete command is the
          267  +words in the command, with all subsitutions performed, meaning that it is a
          268  +list.  See \fBuplevel\fR for more information on levels.
   325    269   .TP
   326    270   \fBinfo library\fR
   327    271   .
   328         -Returns the name of the library directory in which standard Tcl
   329         -scripts are stored.
   330         -This is actually the value of the \fBtcl_library\fR
   331         -variable and may be changed by setting \fBtcl_library\fR.
          272  +Returns the value of \fBtcl_library\fR, which is the name of the library
          273  +directory in which the scripts distributed with Tcl scripts are stored.
   332    274   .TP
   333    275   \fBinfo loaded \fR?\fIinterp\fR? ?\fIpackage\fR?
   334    276   .
   335         -Returns the filename loaded as part of \fIpackage\fR. If \fIpackage\fR
   336         -is not specified, returns a list describing all of the packages
   337         -that have been loaded into \fIinterp\fR with the \fBload\fR command.
   338         -Each list element is a sub-list with two elements consisting of the
   339         -name of the file from which the package was loaded and the name of
   340         -the package.
   341         -For statically-loaded packages the file name will be an empty string.
   342         -If \fIinterp\fR is omitted then information is returned for all packages
   343         -loaded in any interpreter in the process.
   344         -To get a list of just the packages in the current interpreter, specify
   345         -an empty string for the \fIinterp\fR argument.
          277  +Returns the name of each file loaded in \fIinterp\fR va \fBload\fR as part of
          278  +\fIpackage\fR .  If \fIpackage\fR is not given, returns a list where each item
          279  +is the name of the loaded file and the name of the package for which the file
          280  +was loaded.  For a statically-loaded package the name of the file is the empty
          281  +string.  For \fInterp\fR, the empty string is the current interpreter.
   346    282   .TP
   347    283   \fBinfo locals \fR?\fIpattern\fR?
   348    284   .
   349         -If \fIpattern\fR is not specified, returns a list of all the names
   350         -of currently-defined local variables, including arguments to the
   351         -current procedure, if any.
   352         -Variables defined with the \fBglobal\fR, \fBupvar\fR  and
   353         -\fBvariable\fR commands will not be returned.
   354         -If \fIpattern\fR is specified, only those names matching \fIpattern\fR
   355         -are returned.  Matching is determined using the same rules as for
   356         -\fBstring match\fR.
          285  +If \fIpattern\fR is given, returns the name of each local variable matching
          286  +\fIpattern\fR according to \fBstring match\fR.  Otherwise, returns the name of
          287  +each local variable.  A variables defined with the \fBglobal\fR, \fBupvar\fR or
          288  +\fBvariable\fR is not local.
          289  +
   357    290   .TP
   358    291   \fBinfo nameofexecutable\fR
   359    292   .
   360         -Returns the full path name of the binary file from which the application
   361         -was invoked.  If Tcl was unable to identify the file, then an empty
   362         -string is returned.
          293  +Returns the absolute pathname of the program for the current interpreter.  If
          294  +such a file can not be identified an empty string is returned.
   363    295   .TP
   364    296   \fBinfo object\fI subcommand object\fR ?\fIarg ...\fR
   365    297   .
   366         -Returns information about the object, \fIobject\fR. The \fIsubcommand\fRs are
   367         -described in \fBOBJECT INTROSPECTION\fR below.
          298  +Returns information about the object named \fIobject\fR. \fIsubcommand\fR is
          299  +described \fBOBJECT INTROSPECTION\fR below.
   368    300   .TP
   369    301   \fBinfo patchlevel\fR
   370    302   .
   371         -Returns the value of the global variable \fBtcl_patchLevel\fR, which holds
   372         -the exact version of the Tcl library by default.
          303  +Returns the value of the global variable \fBtcl_patchLevel\fR, in which the
          304  +exact version of the Tcl library initially stored.
   373    305   .TP
   374    306   \fBinfo procs \fR?\fIpattern\fR?
   375    307   .
   376         -If \fIpattern\fR is not specified, returns a list of all the
   377         -names of Tcl command procedures in the current namespace.
   378         -If \fIpattern\fR is specified,
   379         -only those procedure names in the current namespace
   380         -matching \fIpattern\fR are returned.
   381         -Matching is determined using the same rules as for
   382         -\fBstring match\fR.
   383         -If \fIpattern\fR contains any namespace separators, they are used to
   384         -select a namespace relative to the current namespace (or relative to
   385         -the global namespace if \fIpattern\fR starts with \fB::\fR) to match
   386         -within; the matching pattern is taken to be the part after the last
   387         -namespace separator.
          308  +Returns the names of all visible procedures. If \fIpattern\fR is given, returns
          309  +only those names that match according to \fBstring match\fR.  Only the final
          310  +component in \fIpattern\fR is actually considered a pattern.  Any qualifying
          311  +components simply select a namespace.  See \fBNAMESPACE RESOLUTION\fR in the
          312  +\fBnamespace\fR(n) documentation.
   388    313   .TP
   389    314   \fBinfo script\fR ?\fIfilename\fR?
   390    315   .
   391         -If a Tcl script file is currently being evaluated (i.e. there is a
   392         -call to \fBTcl_EvalFile\fR active or there is an active invocation
   393         -of the \fBsource\fR command), then this command returns the name
   394         -of the innermost file being processed.  If \fIfilename\fR is specified,
   395         -then the return value of this command will be modified for the
   396         -duration of the active invocation to return that name.  This is
   397         -useful in virtual file system applications.
   398         -Otherwise the command returns an empty string.
          316  +Returns the pathname of the innermost script currently being evaluated, or the
          317  +empty string if no pathname can be determined.  If \fIfilename\fR is given,
          318  +sets the return value of any future calls to \fBinfo script\fR for the duration
          319  +of the innermost active script.  This is useful in virtual file system
          320  +applications.
   399    321   .TP
   400    322   \fBinfo sharedlibextension\fR
   401    323   .
   402         -Returns the extension used on this platform for the names of files
   403         -containing shared libraries (for example, \fB.so\fR under Solaris).
   404         -If shared libraries are not supported on this platform then an empty
   405         -string is returned.
          324  +Returns the extension used on this platform for names of shared libraries, e.g.
          325  +\fB.so\fR under Solaris.  Returns the empty string if shared libraries are not
          326  +supported on this platform.
   406    327   .TP
   407    328   \fBinfo tclversion\fR
   408    329   .
   409         -Returns the value of the global variable \fBtcl_version\fR, which holds the
   410         -major and minor version of the Tcl library by default.
          330  +Returns the value of the global variable \fBtcl_version\fR, in which the
          331  +major and minor version of the Tcl library are stored.
   411    332   .TP
   412    333   \fBinfo vars\fR ?\fIpattern\fR?
   413    334   .
   414         -If \fIpattern\fR is not specified,
   415         -returns a list of all the names of currently-visible variables.
   416         -This includes locals and currently-visible globals.
   417         -If \fIpattern\fR is specified, only those names matching \fIpattern\fR
   418         -are returned.  Matching is determined using the same rules as for
   419         -\fBstring match\fR.
   420         -\fIpattern\fR can be a qualified name like \fBFoo::option*\fR.
   421         -That is, it may specify a particular namespace
   422         -using a sequence of namespace names separated by double colons (\fB::\fR),
   423         -and may have pattern matching special characters
   424         -at the end to specify a set of variables in that namespace.
   425         -If \fIpattern\fR is a qualified name,
   426         -the resulting list of variable names
   427         -has each matching namespace variable qualified with the name
   428         -of its namespace.
   429         -Note that a currently-visible variable may not yet
   430         -.QW exist
   431         -if it has not
   432         -been set (e.g. a variable declared but not set by \fBvariable\fR).
          335  +If \fIpattern\fR is not given, returns the names of all visible variables.  If
          336  +\fIpattern\fR is given, returns only those names that match according to
          337  +\fBstring match\fR.  Only the last component of \fIpattern\fR is a pattern.
          338  +Other components identify a namespace.  See \fBNAMESPACE RESOLUTION\fR in the
          339  +\fBnamespace\fR(n) documentation.  When \fIpattern\fR is a qualified name,
          340  +results are fully qualified.
          341  +
          342  +A variable that has declared but not yet defined is included in the results.
   433    343   .SS "CLASS INTROSPECTION"
   434    344   .PP
   435    345   The following \fIsubcommand\fR values are supported by \fBinfo class\fR:
   436    346   .TP
   437    347   \fBinfo class call\fI class method\fR
   438    348   .
   439    349   Returns a description of the method implementations that are used to provide a
................................................................................
   488    398   \fIclass\fR, not \fIclass\fR itself. The \fIkind\fR can be either
   489    399   \fB\-class\fR to return the definition namespace used for \fBoo::define\fR, or
   490    400   \fB\-instance\fR to return the definition namespace used for
   491    401   \fBoo::objdefine\fR; the \fB\-class\fR kind is default (though this is only
   492    402   actually useful on classes that are subclasses of \fBoo::class\fR).
   493    403   .RS
   494    404   .PP
   495         -If \fIclass\fR does not provide a definition namespace of the specified kind,
          405  +If \fIclass\fR does not provide a definition namespace of the given kind,
   496    406   this command returns the empty string. In those circumstances, the
   497    407   \fBoo::define\fR and \fBoo::objdefine\fR commands look up which definition
   498    408   namespace to use using the class inheritance hierarchy.
   499    409   .RE
   500    410   .VE TIP524
   501    411   .TP
   502    412   \fBinfo class destructor\fI class\fR
................................................................................
   519    429   optional \fIpattern\fR argument is present, it constrains the list of returned
   520    430   instances to those that match it according to the rules of \fBstring match\fR.
   521    431   .TP
   522    432   \fBinfo class methods\fI class\fR ?\fIoptions...\fR?
   523    433   .
   524    434   This subcommand returns a list of all public (i.e. exported) methods of the
   525    435   class called \fIclass\fR. Any of the following \fIoption\fRs may be
   526         -specified, controlling exactly which method names are returned:
          436  +given, controlling exactly which method names are returned:
   527    437   .RS
   528    438   .TP
   529    439   \fB\-all\fR
   530    440   .
   531    441   If the \fB\-all\fR flag is given,
   532    442   .VS TIP500
   533    443   and the \fB\-scope\fR flag is not given,
................................................................................
   596    506   .TP
   597    507   \fBinfo class variables\fI class\fR ?\fB\-private\fR?
   598    508   .
   599    509   This subcommand returns a list of all variables that have been declared for
   600    510   the class named \fIclass\fR (i.e. that are automatically present in the
   601    511   class's methods, constructor and destructor).
   602    512   .VS TIP500
   603         -If the \fB\-private\fR option is specified, this lists the private variables
          513  +If the \fB\-private\fR option is given, this lists the private variables
   604    514   declared instead.
   605    515   .VE TIP500
   606    516   .SS "OBJECT INTROSPECTION"
   607    517   .PP
   608    518   The following \fIsubcommand\fR values are supported by \fBinfo object\fR:
   609    519   .TP
   610    520   \fBinfo object call\fI object method\fR
................................................................................
   634    544   and the call chains that this command files do not actually contain private
   635    545   methods.
   636    546   .VE TIP500
   637    547   .RE
   638    548   .TP
   639    549   \fBinfo object class\fI object\fR ?\fIclassName\fR?
   640    550   .
   641         -If \fIclassName\fR is unspecified, this subcommand returns class of the
          551  +If \fIclassName\fR is not given, this subcommand returns class of the
   642    552   \fIobject\fR object. If \fIclassName\fR is present, this subcommand returns a
   643    553   boolean value indicating whether the \fIobject\fR is of that class.
   644    554   .TP
   645    555   \fBinfo object creationid\fI object\fR
   646    556   .VS TIP500
   647    557   Returns the unique creation identifier for the \fIobject\fR object. This
   648    558   creation identifier is unique to the object (within a Tcl interpreter) and
................................................................................
   703    613   direct or indirect).
   704    614   .RE
   705    615   .TP
   706    616   \fBinfo object methods\fI object\fR ?\fIoption...\fR?
   707    617   .
   708    618   This subcommand returns a list of all public (i.e. exported) methods of the
   709    619   object called \fIobject\fR. Any of the following \fIoption\fRs may be
   710         -specified, controlling exactly which method names are returned:
          620  +given, controlling exactly which method names are returned:
   711    621   .RS
   712    622   .TP
   713    623   \fB\-all\fR
   714    624   .
   715    625   If the \fB\-all\fR flag is given,
   716    626   .VS TIP500
   717    627   and the \fB\-scope\fR flag is not given,
................................................................................
   773    683   .TP
   774    684   \fBinfo object variables\fI object\fRR ?\fB\-private\fR?
   775    685   .
   776    686   This subcommand returns a list of all variables that have been declared for
   777    687   the object named \fIobject\fR (i.e. that are automatically present in the
   778    688   object's methods).
   779    689   .VS TIP500
   780         -If the \fB\-private\fR option is specified, this lists the private variables
          690  +If the \fB\-private\fR option is given, this lists the private variables
   781    691   declared instead.
   782    692   .VE TIP500
   783    693   .TP
   784    694   \fBinfo object vars\fI object\fR ?\fIpattern\fR?
   785    695   .
   786    696   This subcommand returns a list of all variables in the private namespace of
   787    697   the object named \fIobject\fR. If the optional \fIpattern\fR argument is

Changes to doc/mathop.n.

   147    147   Returns the result of raising each value to the power of the result of
   148    148   recursively operating on the result of processing the following arguments, so
   149    149   .QW "\fB** 2 3 4\fR"
   150    150   is the same as
   151    151   .QW "\fB** 2 [** 3 4]\fR" .
   152    152   Each \fInumber\fR may be
   153    153   any numeric value, though the second number must not be fractional if the
   154         -first is negative. If no arguments are given, the result will be one, and if
   155         -only one argument is given, the result will be that argument. The
   156         -result will have an integral value only when all arguments are
   157         -integral values.
          154  +first is negative.  The maximum exponent value that Tcl can handle if the
          155  +first number is an integer > 1 is 268435455. If no arguments are given,
          156  +the result will be one, and if only one argument is given, the result will
          157  +be that argument. The result will have an integral value only when all
          158  +arguments are integral values.
   158    159   .SS "COMPARISON OPERATORS"
   159    160   .PP
   160    161   The behaviors of the comparison operator commands (most of which operate
   161    162   preferentially on numeric arguments) are as follows:
   162    163   .TP
   163    164   \fB==\fR ?\fIarg\fR ...?
   164    165   .

Changes to doc/timerate.n.

    52     52   .TP
    53     53   \fI-calibrate\fR
    54     54   .
    55     55   To measure very fast scripts as exact as posible the calibration process
    56     56   may be required.
    57     57   
    58     58   The \fI-calibrate\fR option is used to calibrate timerate, calculating the
    59         -estimated overhead of the given script as the default overhead for future 
    60         -invocations of the \fBtimerate\fR command. If the \fItime\fR parameter is not 
           59  +estimated overhead of the given script as the default overhead for future
           60  +invocations of the \fBtimerate\fR command. If the \fItime\fR parameter is not
    61     61   specified, the calibrate procedure runs for up to 10 seconds.
    62     62   .TP
    63     63   \fI-overhead double\fR
    64     64   .
    65     65   The \fI-overhead\fR parameter supplies an estimate (in microseconds) of the
    66     66   measurement overhead of each iteration of the tested script. This quantity
    67     67   will be subtracted from the measured time prior to reporting results.

Changes to doc/zipfs.n.

   106    106   \fBzipfs root\fR
   107    107   .
   108    108   Returns a constant string which indicates the mount point for zipfs volumes
   109    109   for the current platform. On Windows, this value is
   110    110   .QW \fBzipfs:/\fR .
   111    111   On Unix, this value is
   112    112   .QW \fB//zipfs:/\fR .
   113         -.RE
   114    113   .TP
   115    114   \fBzipfs unmount \fImountpoint\fR
   116    115   .
   117    116   Unmounts a previously mounted ZIP archive mounted to \fImountpoint\fR.
   118    117   .SS "ZIP CREATION COMMANDS"
   119    118   This package also provides several commands to aid the creation of ZIP
   120    119   archives as Tcl applications.
................................................................................
   180    179   .SH "EXAMPLES"
   181    180   .PP
   182    181   Mounting an ZIP archive as an application directory and running code out of it
   183    182   before unmounting it again:
   184    183   .PP
   185    184   .CS
   186    185   set zip myApp.zip
   187         -set base [file join [\fbzipfs root\fR] myApp]
          186  +set base [file join [\fBzipfs root\fR] myApp]
   188    187   
   189    188   \fBzipfs mount\fR $base $zip
   190    189   # $base now has the contents of myApp.zip
   191    190   
   192    191   source [file join $base app.tcl]
   193    192   # use the contents, load libraries from it, etc...
   194    193   
................................................................................
   209    208   Encryption can be applied to ZIP archives by providing a password when
   210    209   building the ZIP and when mounting it.
   211    210   .PP
   212    211   .CS
   213    212   set zip myApp.zip
   214    213   set sourceDir [file normalize myApp]
   215    214   set password "hunter2"
   216         -set base [file join [\fbzipfs root\fR] myApp]
          215  +set base [file join [\fBzipfs root\fR] myApp]
   217    216   
   218    217   # Create with password
   219    218   \fBzipfs mkzip\fR $targetZip $sourceDir $sourceDir $password
   220    219   
   221    220   # Mount with password
   222    221   \fBzipfs mount\fR $base $zip $password
   223    222   .CE

Changes to generic/regc_locale.c.

   678    678       {0x2b76, 0x2b95}, {0x2b98, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2cf3},
   679    679       {0x2cf9, 0x2d25}, {0x2d30, 0x2d67}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6},
   680    680       {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6},
   681    681       {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2e4f},
   682    682       {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
   683    683       {0x3001, 0x303f}, {0x3041, 0x3096}, {0x3099, 0x30ff}, {0x3105, 0x312f},
   684    684       {0x3131, 0x318e}, {0x3190, 0x31ba}, {0x31c0, 0x31e3}, {0x31f0, 0x321e},
   685         -    {0x3220, 0x32fe}, {0x3300, 0x4db5}, {0x4dc0, 0x9fef}, {0xa000, 0xa48c},
   686         -    {0xa490, 0xa4c6}, {0xa4d0, 0xa62b}, {0xa640, 0xa6f7}, {0xa700, 0xa7bf},
   687         -    {0xa7c2, 0xa7c6}, {0xa7f7, 0xa82b}, {0xa830, 0xa839}, {0xa840, 0xa877},
   688         -    {0xa880, 0xa8c5}, {0xa8ce, 0xa8d9}, {0xa8e0, 0xa953}, {0xa95f, 0xa97c},
   689         -    {0xa980, 0xa9cd}, {0xa9cf, 0xa9d9}, {0xa9de, 0xa9fe}, {0xaa00, 0xaa36},
   690         -    {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa5c, 0xaac2}, {0xaadb, 0xaaf6},
   691         -    {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26},
   692         -    {0xab28, 0xab2e}, {0xab30, 0xab67}, {0xab70, 0xabed}, {0xabf0, 0xabf9},
   693         -    {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
   694         -    {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb36},
   695         -    {0xfb38, 0xfb3c}, {0xfb46, 0xfbc1}, {0xfbd3, 0xfd3f}, {0xfd50, 0xfd8f},
   696         -    {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfd}, {0xfe00, 0xfe19}, {0xfe20, 0xfe52},
   697         -    {0xfe54, 0xfe66}, {0xfe68, 0xfe6b}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc},
   698         -    {0xff01, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
   699         -    {0xffda, 0xffdc}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}
          685  +    {0x3220, 0x4db5}, {0x4dc0, 0x9fef}, {0xa000, 0xa48c}, {0xa490, 0xa4c6},
          686  +    {0xa4d0, 0xa62b}, {0xa640, 0xa6f7}, {0xa700, 0xa7bf}, {0xa7c2, 0xa7c6},
          687  +    {0xa7f7, 0xa82b}, {0xa830, 0xa839}, {0xa840, 0xa877}, {0xa880, 0xa8c5},
          688  +    {0xa8ce, 0xa8d9}, {0xa8e0, 0xa953}, {0xa95f, 0xa97c}, {0xa980, 0xa9cd},
          689  +    {0xa9cf, 0xa9d9}, {0xa9de, 0xa9fe}, {0xaa00, 0xaa36}, {0xaa40, 0xaa4d},
          690  +    {0xaa50, 0xaa59}, {0xaa5c, 0xaac2}, {0xaadb, 0xaaf6}, {0xab01, 0xab06},
          691  +    {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e},
          692  +    {0xab30, 0xab67}, {0xab70, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3},
          693  +    {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9},
          694  +    {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb36}, {0xfb38, 0xfb3c},
          695  +    {0xfb46, 0xfbc1}, {0xfbd3, 0xfd3f}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7},
          696  +    {0xfdf0, 0xfdfd}, {0xfe00, 0xfe19}, {0xfe20, 0xfe52}, {0xfe54, 0xfe66},
          697  +    {0xfe68, 0xfe6b}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff01, 0xffbe},
          698  +    {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc},
          699  +    {0xffe0, 0xffe6}, {0xffe8, 0xffee}
   700    700   #if CHRBITS > 16
   701    701       ,{0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003f, 0x1004d},
   702    702       {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10100, 0x10102}, {0x10107, 0x10133},
   703    703       {0x10137, 0x1018e}, {0x10190, 0x1019b}, {0x101d0, 0x101fd}, {0x10280, 0x1029c},
   704    704       {0x102a0, 0x102d0}, {0x102e0, 0x102fb}, {0x10300, 0x10323}, {0x1032d, 0x1034a},
   705    705       {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x1039f, 0x103c3}, {0x103c8, 0x103d5},
   706    706       {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
................................................................................
   829    829       NOTE(REG_ULOCALE);
   830    830   
   831    831       /*
   832    832        * Search table.
   833    833        */
   834    834   
   835    835       Tcl_DStringInit(&ds);
   836         -    np = Tcl_UniCharToUtfDString(startp, (int)len, &ds);
          836  +    np = Tcl_UniCharToUtfDString(startp, len, &ds);
   837    837       for (cn=cnames; cn->name!=NULL; cn++) {
   838    838   	if (strlen(cn->name)==len && strncmp(cn->name, np, len)==0) {
   839    839   	    break;			/* NOTE BREAK OUT */
   840    840   	}
   841    841       }
   842    842       Tcl_DStringFree(&ds);
   843    843       if (cn->name != NULL) {

Changes to generic/tcl.decls.

   860    860   declare 243 {
   861    861       void Tcl_SplitPath(const char *path, int *argcPtr, const char ***argvPtr)
   862    862   }
   863    863   declare 244 {nostub {Don't use this function in a stub-enabled extension}} {
   864    864       void Tcl_StaticPackage(Tcl_Interp *interp, const char *pkgName,
   865    865   	    Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc)
   866    866   }
   867         -declare 245 {
          867  +declare 245 {deprecated {No longer in use, changed to macro}} {
   868    868       int Tcl_StringMatch(const char *str, const char *pattern)
   869    869   }
   870    870   declare 246 {deprecated {}} {
   871    871       int Tcl_TellOld(Tcl_Channel chan)
   872    872   }
   873    873   declare 247 {deprecated {No longer in use, changed to macro}} {
   874    874       int Tcl_TraceVar(Tcl_Interp *interp, const char *varName, int flags,

Changes to generic/tclCmdAH.c.

   928    928   int
   929    929   Tcl_ExitObjCmd(
   930    930       ClientData dummy,		/* Not used. */
   931    931       Tcl_Interp *interp,		/* Current interpreter. */
   932    932       int objc,			/* Number of arguments. */
   933    933       Tcl_Obj *const objv[])	/* Argument objects. */
   934    934   {
   935         -    int value;
          935  +    Tcl_WideInt value;
   936    936   
   937    937       if ((objc != 1) && (objc != 2)) {
   938    938   	Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
   939    939   	return TCL_ERROR;
   940    940       }
   941    941   
   942    942       if (objc == 1) {
   943    943   	value = 0;
   944         -    } else if (Tcl_GetIntFromObj(interp, objv[1], &value) != TCL_OK) {
          944  +    } else if (TclGetWideBitsFromObj(interp, objv[1], &value) != TCL_OK) {
   945    945   	return TCL_ERROR;
   946    946       }
   947         -    Tcl_Exit(value);
          947  +    Tcl_Exit((int)value);
   948    948       /*NOTREACHED*/
   949    949       return TCL_OK;		/* Better not ever reach this! */
   950    950   }
   951    951   
   952    952   /*
   953    953    *----------------------------------------------------------------------
   954    954    *

Changes to generic/tclCmdMZ.c.

  1441   1441   	 */
  1442   1442   
  1443   1443   	if (TclIsPureByteArray(objv[1])) {
  1444   1444   	    unsigned char uch = (unsigned char) ch;
  1445   1445   
  1446   1446   	    Tcl_SetObjResult(interp, Tcl_NewByteArrayObj(&uch, 1));
  1447   1447   	} else {
  1448         -	    char buf[TCL_UTF_MAX] = "";
         1448  +	    char buf[4] = "";
  1449   1449   
  1450   1450   	    length = Tcl_UniCharToUtf(ch, buf);
  1451   1451   	    if ((ch >= 0xD800) && (length < 3)) {
  1452   1452   		length += Tcl_UniCharToUtf(-1, buf + length);
  1453   1453   	    }
  1454   1454   	    Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, length));
  1455   1455   	}
................................................................................
  4368   4368   
  4369   4369   	middle -= start;		     /* execution time in microsecs */
  4370   4370   
  4371   4371       #ifdef TCL_WIDE_CLICKS
  4372   4372   	/* convert execution time in wide clicks to microsecs */
  4373   4373   	middle *= TclpWideClickInMicrosec();
  4374   4374       #endif
         4375  +
         4376  +	if (!count) { /* no iterations - avoid divide by zero */
         4377  +	    objs[0] = objs[2] = objs[4] = Tcl_NewWideIntObj(0);
         4378  +	    goto retRes;
         4379  +	}
  4375   4380   
  4376   4381   	/* if not calibrate */
  4377   4382   	if (!calibrate) {
  4378   4383   	    /* minimize influence of measurement overhead */
  4379   4384   	    if (overhead > 0) {
  4380   4385   		/* estimate the time of overhead (microsecs) */
  4381   4386   		Tcl_WideUInt curOverhead = overhead * count;
................................................................................
  4421   4426   	    } else {
  4422   4427   		objs[4] = Tcl_NewWideIntObj(val);
  4423   4428   	    }
  4424   4429   	} else {
  4425   4430   	    objs[4] = Tcl_NewWideIntObj((count / middle) * 1000000);
  4426   4431   	}
  4427   4432   
         4433  +    retRes:
  4428   4434   	/* estimated net execution time (in millisecs) */
  4429   4435   	if (!calibrate) {
  4430         -	    objs[6] = Tcl_ObjPrintf("%.3f", (double)middle / 1000);
         4436  +	    if (middle >= 1) {
         4437  +		objs[6] = Tcl_ObjPrintf("%.3f", (double)middle / 1000);
         4438  +	    } else {
         4439  +		objs[6] = Tcl_NewWideIntObj(0);
         4440  +	    }
  4431   4441   	    TclNewLiteralStringObj(objs[7], "nett-ms");
  4432   4442   	}
  4433   4443   
  4434   4444   	/*
  4435   4445   	* Construct the result as a list because many programs have always parsed
  4436   4446   	* as such (extracting the first element, typically).
  4437   4447   	*/

Changes to generic/tclCompCmdsSZ.c.

  1498   1498   	PUSH("");
  1499   1499   	count++;
  1500   1500       }
  1501   1501   
  1502   1502       for (endTokenPtr = tokenPtr + parse.numTokens;
  1503   1503   	    tokenPtr < endTokenPtr; tokenPtr = TokenAfter(tokenPtr)) {
  1504   1504   	int length, literal, catchRange, breakJump;
  1505         -	char buf[TCL_UTF_MAX] = "";
         1505  +	char buf[4] = "";
  1506   1506   	JumpFixup startFixup, okFixup, returnFixup, breakFixup;
  1507   1507   	JumpFixup continueFixup, otherFixup, endFixup;
  1508   1508   
  1509   1509   	switch (tokenPtr->type) {
  1510   1510   	case TCL_TOKEN_TEXT:
  1511   1511   	    literal = TclRegisterLiteral(envPtr,
  1512   1512   		    tokenPtr->start, tokenPtr->size, 0);

Changes to generic/tclCompExpr.c.

  2062   2062        * have no direct relevance here.
  2063   2063        */
  2064   2064   
  2065   2065       if (!TclIsBareword(*start) || *start == '_') {
  2066   2066   	if (Tcl_UtfCharComplete(start, numBytes)) {
  2067   2067   	    scanned = TclUtfToUniChar(start, &ch);
  2068   2068   	} else {
  2069         -	    char utfBytes[TCL_UTF_MAX];
         2069  +	    char utfBytes[4];
  2070   2070   
  2071   2071   	    memcpy(utfBytes, start, numBytes);
  2072   2072   	    utfBytes[numBytes] = '\0';
  2073   2073   	    scanned = TclUtfToUniChar(utfBytes, &ch);
  2074   2074   	}
  2075   2075   	*lexemePtr = INVALID;
  2076   2076   	Tcl_DecrRefCount(literal);

Changes to generic/tclCompile.c.

  1740   1740   	    if (tempPtr != NULL) {
  1741   1741   		Tcl_AppendToObj(tempPtr, tokenPtr->start, tokenPtr->size);
  1742   1742   	    }
  1743   1743   	    break;
  1744   1744   
  1745   1745   	case TCL_TOKEN_BS:
  1746   1746   	    if (tempPtr != NULL) {
  1747         -		char utfBuf[TCL_UTF_MAX] = "";
         1747  +		char utfBuf[4] = "";
  1748   1748   		int length = TclParseBackslash(tokenPtr->start,
  1749   1749   			tokenPtr->size, NULL, utfBuf);
  1750   1750   
  1751   1751   		Tcl_AppendToObj(tempPtr, utfBuf, length);
  1752   1752   	    }
  1753   1753   	    break;
  1754   1754   
................................................................................
  2354   2354   				 * compile. */
  2355   2355       int count,			/* Number of tokens to consider at tokenPtr.
  2356   2356   				 * Must be at least 1. */
  2357   2357       CompileEnv *envPtr)		/* Holds the resulting instructions. */
  2358   2358   {
  2359   2359       Tcl_DString textBuffer;	/* Holds concatenated chars from adjacent
  2360   2360   				 * TCL_TOKEN_TEXT, TCL_TOKEN_BS tokens. */
  2361         -    char buffer[TCL_UTF_MAX] = "";
         2361  +    char buffer[4] = "";
  2362   2362       int i, numObjsToConcat, length, adjust;
  2363   2363       unsigned char *entryCodeNext = envPtr->codeNext;
  2364   2364   #define NUM_STATIC_POS 20
  2365   2365       int isLiteral, maxNumCL, numCL;
  2366   2366       int *clPosition = NULL;
  2367   2367       int depth = TclGetStackDepth(envPtr);
  2368   2368   

Changes to generic/tclDecls.h.

   750    750   				const char ***argvPtr);
   751    751   /* 244 */
   752    752   EXTERN void		Tcl_StaticPackage(Tcl_Interp *interp,
   753    753   				const char *pkgName,
   754    754   				Tcl_PackageInitProc *initProc,
   755    755   				Tcl_PackageInitProc *safeInitProc);
   756    756   /* 245 */
   757         -EXTERN int		Tcl_StringMatch(const char *str, const char *pattern);
          757  +TCL_DEPRECATED("No longer in use, changed to macro")
          758  +int			Tcl_StringMatch(const char *str, const char *pattern);
   758    759   /* 246 */
   759    760   TCL_DEPRECATED("")
   760    761   int			Tcl_TellOld(Tcl_Channel chan);
   761    762   /* 247 */
   762    763   TCL_DEPRECATED("No longer in use, changed to macro")
   763    764   int			Tcl_TraceVar(Tcl_Interp *interp, const char *varName,
   764    765   				int flags, Tcl_VarTraceProc *proc,
................................................................................
  2172   2173       const char * (*tcl_SetVar2) (Tcl_Interp *interp, const char *part1, const char *part2, const char *newValue, int flags); /* 238 */
  2173   2174       const char * (*tcl_SignalId) (int sig); /* 239 */
  2174   2175       const char * (*tcl_SignalMsg) (int sig); /* 240 */
  2175   2176       void (*tcl_SourceRCFile) (Tcl_Interp *interp); /* 241 */
  2176   2177       int (*tcl_SplitList) (Tcl_Interp *interp, const char *listStr, int *argcPtr, const char ***argvPtr); /* 242 */
  2177   2178       void (*tcl_SplitPath) (const char *path, int *argcPtr, const char ***argvPtr); /* 243 */
  2178   2179       TCL_DEPRECATED_API("Don't use this function in a stub-enabled extension") void (*tcl_StaticPackage) (Tcl_Interp *interp, const char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc); /* 244 */
  2179         -    int (*tcl_StringMatch) (const char *str, const char *pattern); /* 245 */
         2180  +    TCL_DEPRECATED_API("No longer in use, changed to macro") int (*tcl_StringMatch) (const char *str, const char *pattern); /* 245 */
  2180   2181       TCL_DEPRECATED_API("") int (*tcl_TellOld) (Tcl_Channel chan); /* 246 */
  2181   2182       TCL_DEPRECATED_API("No longer in use, changed to macro") int (*tcl_TraceVar) (Tcl_Interp *interp, const char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData); /* 247 */
  2182   2183       int (*tcl_TraceVar2) (Tcl_Interp *interp, const char *part1, const char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData); /* 248 */
  2183   2184       char * (*tcl_TranslateFileName) (Tcl_Interp *interp, const char *name, Tcl_DString *bufferPtr); /* 249 */
  2184   2185       int (*tcl_Ungets) (Tcl_Channel chan, const char *str, int len, int atHead); /* 250 */
  2185   2186       void (*tcl_UnlinkVar) (Tcl_Interp *interp, const char *varName); /* 251 */
  2186   2187       int (*tcl_UnregisterChannel) (Tcl_Interp *interp, Tcl_Channel chan); /* 252 */
................................................................................
  4069   4070   #define Tcl_SetIntObj(objPtr, value)	Tcl_SetWideIntObj((objPtr), (int)(value))
  4070   4071   #undef Tcl_SetLongObj
  4071   4072   #define Tcl_SetLongObj(objPtr, value)	Tcl_SetWideIntObj((objPtr), (long)(value))
  4072   4073   #undef Tcl_GetUnicode
  4073   4074   #define Tcl_GetUnicode(objPtr)	Tcl_GetUnicodeFromObj((objPtr), NULL)
  4074   4075   #undef Tcl_BackgroundError
  4075   4076   #define Tcl_BackgroundError(interp)	Tcl_BackgroundException((interp), TCL_ERROR)
         4077  +#undef Tcl_StringMatch
         4078  +#define Tcl_StringMatch(str, pattern) Tcl_StringCaseMatch((str), (pattern), 0)
  4076   4079   
  4077   4080   /*
  4078   4081    * Deprecated Tcl procedures:
  4079   4082    */
  4080   4083   
  4081   4084   #undef Tcl_EvalObj
  4082   4085   #define Tcl_EvalObj(interp, objPtr) \
  4083   4086       Tcl_EvalObjEx(interp, objPtr, 0)
  4084   4087   #undef Tcl_GlobalEvalObj
  4085   4088   #define Tcl_GlobalEvalObj(interp, objPtr) \
  4086   4089       Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_GLOBAL)
  4087   4090   
  4088   4091   #endif /* _TCLDECLS */

Changes to generic/tclExecute.c.

  5211   5211   	} else if (TclIsPureByteArray(valuePtr)) {
  5212   5212   	    objResultPtr = Tcl_NewByteArrayObj(
  5213   5213   		    Tcl_GetByteArrayFromObj(valuePtr, NULL)+index, 1);
  5214   5214   	} else if (valuePtr->bytes && length == valuePtr->length) {
  5215   5215   	    objResultPtr = Tcl_NewStringObj((const char *)
  5216   5216   		    valuePtr->bytes+index, 1);
  5217   5217   	} else {
  5218         -	    char buf[TCL_UTF_MAX] = "";
         5218  +	    char buf[4] = "";
  5219   5219   	    int ch = Tcl_GetUniChar(valuePtr, index);
  5220   5220   
  5221   5221   	    /*
  5222   5222   	     * This could be: Tcl_NewUnicodeObj((const Tcl_UniChar *)&ch, 1)
  5223   5223   	     * but creating the object as a string seems to be faster in
  5224   5224   	     * practical use.
  5225   5225   	     */
................................................................................
  8396   8396   		wResult = oddExponent ? -Exp64Value[base] : Exp64Value[base];
  8397   8397   		WIDE_RESULT(wResult);
  8398   8398   	    }
  8399   8399   	}
  8400   8400   
  8401   8401       overflowExpon:
  8402   8402   	Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
  8403         -	if (big2.used > 1) {
         8403  +	if ((big2.used > 1)
         8404  +#if DIGIT_BIT > 28
         8405  +		|| ((big2.used == 1) && (big2.dp[0] >= (1<<28)))
         8406  +#endif
         8407  +	) {
  8404   8408   	    mp_clear(&big2);
  8405   8409   	    Tcl_SetObjResult(interp, Tcl_NewStringObj(
  8406   8410   		    "exponent too large", -1));
  8407   8411   	    return GENERAL_ARITHMETIC_ERROR;
  8408   8412   	}
  8409   8413   	Tcl_TakeBignumFromObj(NULL, valuePtr, &big1);
  8410   8414   	mp_init(&bigResult);

Changes to generic/tclIO.c.

  6212   6212   		{
  6213   6213   		    /*
  6214   6214   		     * There are chars leading the buffer before the eof char.
  6215   6215   		     * Adjust the dstLimit so we go back and read only those
  6216   6216   		     * and do not encounter the eof char this time.
  6217   6217   		     */
  6218   6218   
  6219         -		    dstLimit = dstRead - 1 + TCL_UTF_MAX;
         6219  +		    dstLimit = dstRead + (TCL_UTF_MAX - 1);
  6220   6220   		    statePtr->flags = savedFlags;
  6221   6221   		    statePtr->inputEncodingFlags = savedIEFlags;
  6222   6222   		    statePtr->inputEncodingState = savedState;
  6223   6223   		    continue;
  6224   6224   		}
  6225   6225   	    }
  6226   6226   
................................................................................
  6237   6237   		/*
  6238   6238   		 * There are chars we can read before we hit the bare CR.  Go
  6239   6239   		 * back with a smaller dstLimit so we get them in the next
  6240   6240   		 * pass, compute a matching srcRead, and don't end up back
  6241   6241   		 * here in this call.
  6242   6242   		 */
  6243   6243   
  6244         -		dstLimit = dstRead - 1 + TCL_UTF_MAX;
         6244  +		dstLimit = dstRead + (TCL_UTF_MAX - 1);
  6245   6245   		statePtr->flags = savedFlags;
  6246   6246   		statePtr->inputEncodingFlags = savedIEFlags;
  6247   6247   		statePtr->inputEncodingState = savedState;
  6248   6248   		continue;
  6249   6249   	    }
  6250   6250   
  6251   6251   	    assert(dstWrote == 0);
................................................................................
  6330   6330   	     * TODO: This cannot happen anymore.
  6331   6331   	     *
  6332   6332   	     * We read more chars than allowed.  Reset limits to prevent that
  6333   6333   	     * and try again.  Don't forget the extra padding of TCL_UTF_MAX
  6334   6334   	     * bytes demanded by the Tcl_ExternalToUtf() call!
  6335   6335   	     */
  6336   6336   
  6337         -	    dstLimit = Tcl_UtfAtIndex(dst, charsToRead) - 1 + TCL_UTF_MAX - dst;
         6337  +	    dstLimit = Tcl_UtfAtIndex(dst, charsToRead) - dst + (TCL_UTF_MAX - 1);
  6338   6338   	    statePtr->flags = savedFlags;
  6339   6339   	    statePtr->inputEncodingFlags = savedIEFlags;
  6340   6340   	    statePtr->inputEncodingState = savedState;
  6341   6341   	    continue;
  6342   6342   	}
  6343   6343   
  6344   6344   	if (dstWrote == 0) {

Changes to generic/tclParse.c.

   787    787   				 * written. At most TCL_UTF_MAX bytes will be
   788    788   				 * written there. */
   789    789   {
   790    790       register const char *p = src+1;
   791    791       Tcl_UniChar unichar = 0;
   792    792       int result;
   793    793       int count;
   794         -    char buf[TCL_UTF_MAX] = "";
          794  +    char buf[4] = "";
   795    795   
   796    796       if (numBytes == 0) {
   797    797   	if (readPtr != NULL) {
   798    798   	    *readPtr = 0;
   799    799   	}
   800    800   	return 0;
   801    801       }
................................................................................
  2147   2147   
  2148   2148       adjust = 0;
  2149   2149       result = NULL;
  2150   2150       for (; count>0 && code==TCL_OK ; count--, tokenPtr++) {
  2151   2151   	Tcl_Obj *appendObj = NULL;
  2152   2152   	const char *append = NULL;
  2153   2153   	int appendByteLength = 0;
  2154         -	char utfCharBytes[TCL_UTF_MAX] = "";
         2154  +	char utfCharBytes[4] = "";
  2155   2155   
  2156   2156   	switch (tokenPtr->type) {
  2157   2157   	case TCL_TOKEN_TEXT:
  2158   2158   	    append = tokenPtr->start;
  2159   2159   	    appendByteLength = tokenPtr->size;
  2160   2160   	    break;
  2161   2161   

Changes to generic/tclProcess.c.

   536    536   	result = Tcl_ListObjGetElements(interp, objv[1], &numPids, &pidObjs);
   537    537   	if (result != TCL_OK) {
   538    538   	    return result;
   539    539   	}
   540    540   	dict = Tcl_NewDictObj();
   541    541   	Tcl_MutexLock(&infoTablesMutex);
   542    542   	for (i = 0; i < numPids; i++) {
   543         -	    result = Tcl_GetIntFromObj(interp, pidObjs[i], (int *) &pid);
          543  +	    result = Tcl_GetIntFromObj(interp, pidObjs[i], &pid);
   544    544   	    if (result != TCL_OK) {
   545    545   		Tcl_MutexUnlock(&infoTablesMutex);
   546    546   		Tcl_DecrRefCount(dict);
   547    547   		return result;
   548    548   	    }
   549    549   
   550    550   	    entry = Tcl_FindHashEntry(&infoTablePerResolvedPid, INT2PTR(pid));
................................................................................
   650    650   
   651    651   	result = Tcl_ListObjGetElements(interp, objv[1], &numPids, &pidObjs);
   652    652   	if (result != TCL_OK) {
   653    653   	    return result;
   654    654   	}
   655    655   	Tcl_MutexLock(&infoTablesMutex);
   656    656   	for (i = 0; i < numPids; i++) {
   657         -	    result = Tcl_GetIntFromObj(interp, pidObjs[i], (int *) &pid);
          657  +	    result = Tcl_GetIntFromObj(interp, pidObjs[i], &pid);
   658    658   	    if (result != TCL_OK) {
   659    659   		Tcl_MutexUnlock(&infoTablesMutex);
   660    660   		return result;
   661    661   	    }
   662    662   
   663    663   	    entry = Tcl_FindHashEntry(&infoTablePerResolvedPid, INT2PTR(pid));
   664    664   	    if (!entry) {

Changes to generic/tclScan.c.

   257    257   				 * required. */
   258    258   {
   259    259       int gotXpg, gotSequential, value, i, flags;
   260    260       char *end;
   261    261       Tcl_UniChar ch = 0;
   262    262       int objIndex, xpgSize, nspace = numVars;
   263    263       int *nassign = TclStackAlloc(interp, nspace * sizeof(int));
   264         -    char buf[TCL_UTF_MAX+1] = "";
          264  +    char buf[TCL_UTF_MAX + 1] = "";
   265    265       Tcl_Obj *errorMsg;		/* Place to build an error messages. Note that
   266    266   				 * these are messy operations because we do
   267    267   				 * not want to use the formatting engine;
   268    268   				 * we're inside there! */
   269    269   
   270    270       /*
   271    271        * Initialize an array that records the number of times a variable is

Changes to generic/tclStringObj.c.

  2037   2037   		    numChars = precision;
  2038   2038   		    Tcl_IncrRefCount(segment);
  2039   2039   		    allocSegment = 1;
  2040   2040   		}
  2041   2041   	    }
  2042   2042   	    break;
  2043   2043   	case 'c': {
  2044         -	    char buf[TCL_UTF_MAX] = "";
         2044  +	    char buf[4] = "";
  2045   2045   	    int code, length;
  2046   2046   
  2047   2047   	    if (TclGetIntFromObj(interp, segment, &code) != TCL_OK) {
  2048   2048   		goto error;
  2049   2049   	    }
  2050   2050   	    length = Tcl_UniCharToUtf(code, buf);
  2051   2051   	    if ((code >= 0xD800) && (length < 3)) {

Changes to generic/tclStubInit.c.

   412    412   #   define TclpLocaltime_unix 0
   413    413   #   define TclpGmtime_unix 0
   414    414   #   define Tcl_SetExitProc 0
   415    415   #   define Tcl_SetPanicProc 0
   416    416   #   define Tcl_FindExecutable 0
   417    417   #   define Tcl_GetUnicode 0
   418    418   #   define TclOldFreeObj 0
          419  +#   undef Tcl_StringMatch
          420  +#   define Tcl_StringMatch 0
   419    421   #   define TclBN_reverse 0
   420    422   #   define TclBN_fast_s_mp_mul_digs 0
   421    423   #   define TclBN_fast_s_mp_sqr 0
   422    424   #   define TclBN_mp_karatsuba_mul 0
   423    425   #   define TclBN_mp_karatsuba_sqr 0
   424    426   #   define TclBN_mp_toom_mul 0
   425    427   #   define TclBN_mp_toom_sqr 0

Changes to generic/tclTest.c.

    48     48   /*
    49     49    * Dynamic string shared by TestdcallCmd and DelCallbackProc; used to collect
    50     50    * the results of the various deletion callbacks.
    51     51    */
    52     52   
    53     53   static Tcl_DString delString;
    54     54   static Tcl_Interp *delInterp;
           55  +static const Tcl_ObjType *properByteArrayType;
    55     56   
    56     57   /*
    57     58    * One of the following structures exists for each asynchronous handler
    58     59    * created by the "testasync" command".
    59     60    */
    60     61   
    61     62   typedef struct TestAsyncHandler {
................................................................................
   548    549    *----------------------------------------------------------------------
   549    550    */
   550    551   
   551    552   int
   552    553   Tcltest_Init(
   553    554       Tcl_Interp *interp)		/* Interpreter for application. */
   554    555   {
   555         -    Tcl_Obj *listPtr;
   556         -    Tcl_Obj **objv;
          556  +    Tcl_Obj **objv, *objPtr;
   557    557       int objc, index;
   558    558       static const char *const specialOptions[] = {
   559    559   	"-appinitprocerror", "-appinitprocdeleteinterp",
   560    560   	"-appinitprocclosestderr", "-appinitprocsetrcfile", NULL
   561    561       };
   562    562   
   563    563       if (Tcl_InitStubs(interp, "8.5-", 0) == NULL) {
................................................................................
   570    570   	return TCL_ERROR;
   571    571       }
   572    572       /* TIP #268: Full patchlevel instead of just major.minor */
   573    573   
   574    574       if (Tcl_PkgProvideEx(interp, "Tcltest", TCL_PATCH_LEVEL, NULL) == TCL_ERROR) {
   575    575   	return TCL_ERROR;
   576    576       }
          577  +
          578  +    objPtr = Tcl_NewStringObj("abc", 3);
          579  +    (void)Tcl_GetByteArrayFromObj(objPtr, &index);
          580  +    properByteArrayType = objPtr->typePtr;
          581  +    Tcl_DecrRefCount(objPtr);
   577    582   
   578    583       /*
   579    584        * Create additional commands and math functions for testing Tcl.
   580    585        */
   581    586   
   582    587       Tcl_CreateObjCommand(interp, "gettimes", GetTimesObjCmd, NULL, NULL);
   583    588       Tcl_CreateCommand(interp, "noop", NoopCmd, NULL, NULL);
................................................................................
   736    741       }
   737    742   #endif
   738    743   
   739    744       /*
   740    745        * Check for special options used in ../tests/main.test
   741    746        */
   742    747   
   743         -    listPtr = Tcl_GetVar2Ex(interp, "argv", NULL, TCL_GLOBAL_ONLY);
   744         -    if (listPtr != NULL) {
   745         -	if (Tcl_ListObjGetElements(interp, listPtr, &objc, &objv) != TCL_OK) {
          748  +    objPtr = Tcl_GetVar2Ex(interp, "argv", NULL, TCL_GLOBAL_ONLY);
          749  +    if (objPtr != NULL) {
          750  +	if (Tcl_ListObjGetElements(interp, objPtr, &objc, &objv) != TCL_OK) {
   746    751   	    return TCL_ERROR;
   747    752   	}
   748    753   	if (objc && (Tcl_GetIndexFromObj(NULL, objv[0], specialOptions, NULL,
   749    754   		TCL_EXACT, &index) == TCL_OK)) {
   750    755   	    switch (index) {
   751    756   	    case 0:
   752    757   		return TCL_ERROR;
................................................................................
  5007   5012   static int
  5008   5013   TestbytestringObjCmd(
  5009   5014       void *unused,		/* Not used. */
  5010   5015       Tcl_Interp *interp,		/* Current interpreter. */
  5011   5016       int objc,			/* Number of arguments. */
  5012   5017       Tcl_Obj *const objv[])	/* The argument objects. */
  5013   5018   {
  5014         -    int n;
         5019  +    int n = 0;
  5015   5020       const char *p;
  5016   5021   
  5017   5022       if (objc != 2) {
  5018   5023   	Tcl_WrongNumArgs(interp, 1, objv, "bytearray");
  5019   5024   	return TCL_ERROR;
  5020   5025       }
  5021   5026       p = (const char *)Tcl_GetByteArrayFromObj(objv[1], &n);
         5027  +    if ((p == NULL) || !Tcl_FetchIntRep(objv[1], properByteArrayType)) {
         5028  +	Tcl_AppendResult(interp, "testbytestring expects bytes", NULL);
         5029  +	return TCL_ERROR;
         5030  +    }
  5022   5031       Tcl_SetObjResult(interp, Tcl_NewStringObj(p, n));
  5023   5032       return TCL_OK;
  5024   5033   }
  5025   5034   
  5026   5035   /*
  5027   5036    *----------------------------------------------------------------------
  5028   5037    *

Changes to generic/tclTestObj.c.

   381    381   	 * has ref count 1 (i.e. the object is unshared) we can modify that
   382    382   	 * object directly. Otherwise, if RC>1 (i.e. the object is shared),
   383    383   	 * we must create a new object to modify/set and decrement the old
   384    384   	 * formerly-shared object's ref count. This is "copy on write".
   385    385   	 */
   386    386   
   387    387   	if ((varPtr[varIndex] != NULL) && !Tcl_IsShared(varPtr[varIndex])) {
   388         -	    Tcl_SetBooleanObj(varPtr[varIndex], boolValue);
          388  +	    Tcl_SetWideIntObj(varPtr[varIndex], boolValue != 0);
   389    389   	} else {
   390         -	    SetVarToObj(varPtr, varIndex, Tcl_NewBooleanObj(boolValue));
          390  +	    SetVarToObj(varPtr, varIndex, Tcl_NewWideIntObj(boolValue != 0));
   391    391   	}
   392    392   	Tcl_SetObjResult(interp, varPtr[varIndex]);
   393    393       } else if (strcmp(subCmd, "get") == 0) {
   394    394   	if (objc != 3) {
   395    395   	    goto wrongNumArgs;
   396    396   	}
   397    397   	if (CheckIfVarUnset(interp, varPtr,varIndex)) {
................................................................................
   406    406   	    return TCL_ERROR;
   407    407   	}
   408    408   	if (Tcl_GetBooleanFromObj(interp, varPtr[varIndex],
   409    409   				  &boolValue) != TCL_OK) {
   410    410   	    return TCL_ERROR;
   411    411   	}
   412    412   	if (!Tcl_IsShared(varPtr[varIndex])) {
   413         -	    Tcl_SetBooleanObj(varPtr[varIndex], !boolValue);
          413  +	    Tcl_SetWideIntObj(varPtr[varIndex], boolValue == 0);
   414    414   	} else {
   415         -	    SetVarToObj(varPtr, varIndex, Tcl_NewBooleanObj(!boolValue));
          415  +	    SetVarToObj(varPtr, varIndex, Tcl_NewWideIntObj(boolValue == 0));
   416    416   	}
   417    417   	Tcl_SetObjResult(interp, varPtr[varIndex]);
   418    418       } else {
   419    419   	Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
   420    420   		"bad option \"", Tcl_GetString(objv[1]),
   421    421   		"\": must be set, get, or not", NULL);
   422    422   	return TCL_ERROR;
................................................................................
   654    654   TestintobjCmd(
   655    655       ClientData clientData,	/* Not used. */
   656    656       Tcl_Interp *interp,		/* Current interpreter. */
   657    657       int objc,			/* Number of arguments. */
   658    658       Tcl_Obj *const objv[])	/* Argument objects. */
   659    659   {
   660    660       int intValue, varIndex, i;
   661         -    long longValue;
          661  +    Tcl_WideInt wideValue;
   662    662       const char *index, *subCmd, *string;
   663    663       Tcl_Obj **varPtr;
   664    664   
   665    665       if (objc < 3) {
   666    666   	wrongNumArgs:
   667    667   	Tcl_WrongNumArgs(interp, 1, objv, "option arg ?arg ...?");
   668    668   	return TCL_ERROR;
................................................................................
   709    709   	}
   710    710   	intValue = i;
   711    711   	if ((varPtr[varIndex] != NULL) && !Tcl_IsShared(varPtr[varIndex])) {
   712    712   	    Tcl_SetIntObj(varPtr[varIndex], intValue);
   713    713   	} else {
   714    714   	    SetVarToObj(varPtr, varIndex, Tcl_NewIntObj(intValue));
   715    715   	}
   716         -    } else if (strcmp(subCmd, "setlong") == 0) {
          716  +    } else if (strcmp(subCmd, "setint") == 0) {
   717    717   	if (objc != 4) {
   718    718   	    goto wrongNumArgs;
   719    719   	}
   720    720   	string = Tcl_GetString(objv[3]);
   721    721   	if (Tcl_GetInt(interp, string, &i) != TCL_OK) {
   722    722   	    return TCL_ERROR;
   723    723   	}
................................................................................
   724    724   	intValue = i;
   725    725   	if ((varPtr[varIndex] != NULL) && !Tcl_IsShared(varPtr[varIndex])) {
   726    726   	    Tcl_SetWideIntObj(varPtr[varIndex], intValue);
   727    727   	} else {
   728    728   	    SetVarToObj(varPtr, varIndex, Tcl_NewWideIntObj(intValue));
   729    729   	}
   730    730   	Tcl_SetObjResult(interp, varPtr[varIndex]);
   731         -    } else if (strcmp(subCmd, "setmaxlong") == 0) {
   732         -	long maxLong = LONG_MAX;
          731  +    } else if (strcmp(subCmd, "setmax") == 0) {
          732  +	Tcl_WideInt maxWide = WIDE_MAX;
   733    733   	if (objc != 3) {
   734    734   	    goto wrongNumArgs;
   735    735   	}
   736    736   	if ((varPtr[varIndex] != NULL) && !Tcl_IsShared(varPtr[varIndex])) {
   737         -	    Tcl_SetWideIntObj(varPtr[varIndex], maxLong);
          737  +	    Tcl_SetWideIntObj(varPtr[varIndex], maxWide);
   738    738   	} else {
   739         -	    SetVarToObj(varPtr, varIndex, Tcl_NewWideIntObj(maxLong));
          739  +	    SetVarToObj(varPtr, varIndex, Tcl_NewWideIntObj(maxWide));
   740    740   	}
   741         -    } else if (strcmp(subCmd, "ismaxlong") == 0) {
          741  +    } else if (strcmp(subCmd, "ismax") == 0) {
   742    742   	if (objc != 3) {
   743    743   	    goto wrongNumArgs;
   744    744   	}
   745    745   	if (CheckIfVarUnset(interp, varPtr,varIndex)) {
   746    746   	    return TCL_ERROR;
   747    747   	}
   748         -	if (Tcl_GetLongFromObj(interp, varPtr[varIndex], &longValue) != TCL_OK) {
          748  +	if (Tcl_GetWideIntFromObj(interp, varPtr[varIndex], &wideValue) != TCL_OK) {
   749    749   	    return TCL_ERROR;
   750    750   	}
   751    751   	Tcl_AppendToObj(Tcl_GetObjResult(interp),
   752         -		((longValue == LONG_MAX)? "1" : "0"), -1);
          752  +		((wideValue == WIDE_MAX)? "1" : "0"), -1);
   753    753       } else if (strcmp(subCmd, "get") == 0) {
   754    754   	if (objc != 3) {
   755    755   	    goto wrongNumArgs;
   756    756   	}
   757    757   	if (CheckIfVarUnset(interp, varPtr,varIndex)) {
   758    758   	    return TCL_ERROR;
   759    759   	}

Changes to generic/tclTestProcBodyObj.c.

   336    336   
   337    337       if (objc != 1) {
   338    338   	Tcl_WrongNumArgs(interp, 1, objv, "");
   339    339   	return TCL_ERROR;
   340    340       }
   341    341   
   342    342       version = Tcl_PkgPresent(interp, packageName, packageVersion, 1);
   343         -    Tcl_SetObjResult(interp, Tcl_NewBooleanObj(
          343  +    Tcl_SetObjResult(interp, Tcl_NewWideIntObj(
   344    344   	    strcmp(version, packageVersion) == 0));
   345    345       return TCL_OK;
   346    346   }
   347    347   
   348    348   /*
   349    349    * Local Variables:
   350    350    * mode: c
   351    351    * c-basic-offset: 4
   352    352    * fill-column: 78
   353    353    * End:
   354    354    */

Changes to generic/tclTomMath.h.

    21     21   
    22     22   
    23     23   #ifdef __cplusplus
    24     24   extern "C" {
    25     25   #endif
    26     26   
    27     27   /* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */
    28         -#if defined(_MSC_VER) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__)
           28  +#if defined(_WIN32) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__)
    29     29   #   define MP_32BIT
    30     30   #endif
    31     31   
    32     32   /* detect 64-bit mode if possible */
    33     33   #if defined(NEVER)
    34     34   #   if !(defined(MP_32BIT) || defined(MP_16BIT) || defined(MP_8BIT))
    35     35   #      if defined(__GNUC__)
................................................................................
   106    106   #      define MP_28BIT
   107    107   #   endif
   108    108   #endif
   109    109   
   110    110   /* otherwise the bits per digit is calculated automatically from the size of a mp_digit */
   111    111   #ifndef DIGIT_BIT
   112    112   #   define DIGIT_BIT (((CHAR_BIT * MP_SIZEOF_MP_DIGIT) - 1))  /* bits per digit */
   113         -typedef unsigned long mp_min_u32;
   114         -#else
   115         -typedef mp_digit mp_min_u32;
   116    113   #endif
   117    114   
   118    115   #define MP_DIGIT_BIT     DIGIT_BIT
   119    116   #define MP_MASK          ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1))
   120    117   #define MP_DIGIT_MAX     MP_MASK
   121    118   
   122    119   /* equalities */
................................................................................
   138    135   /* Primality generation flags */
   139    136   #define LTM_PRIME_BBS      0x0001 /* BBS style prime */
   140    137   #define LTM_PRIME_SAFE     0x0002 /* Safe prime (p-1)/2 == prime */
   141    138   #define LTM_PRIME_2MSB_ON  0x0008 /* force 2nd MSB to 1 */
   142    139   
   143    140   typedef int           mp_err;
   144    141   
   145         -/* you'll have to tune these... */
   146         -#if defined(BUILD_tcl) || !defined(_WIN32)
   147         -MODULE_SCOPE int KARATSUBA_MUL_CUTOFF,
   148         -       KARATSUBA_SQR_CUTOFF,
   149         -       TOOM_MUL_CUTOFF,
   150         -       TOOM_SQR_CUTOFF;
   151         -#endif
   152         -
   153    142   /* define this to use lower memory usage routines (exptmods mostly) */
   154    143   /* #define MP_LOW_MEM */
   155    144   
   156    145   /* default precision */
   157    146   #ifndef MP_PREC
   158    147   #   ifndef MP_LOW_MEM
   159    148   #      define MP_PREC 32        /* default digits of precision */
................................................................................
   225    214   /* init to a given number of digits */
   226    215   /*
   227    216   int mp_init_size(mp_int *a, int size);
   228    217   */
   229    218   
   230    219   /* ---> Basic Manipulations <--- */
   231    220   #define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO)
   232         -#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO)
   233         -#define mp_isodd(a)  ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO)
          221  +#define mp_iseven(a) (!mp_get_bit((a),0))
          222  +#define mp_isodd(a)  mp_get_bit((a),0)
   234    223   #define mp_isneg(a)  (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO)
   235    224   
   236    225   /* set to zero */
   237    226   /*
   238    227   void mp_zero(mp_int *a);
   239    228   */
   240    229   

Changes to generic/tclTomMathDecls.h.

    35     35   /* MODULE_SCOPE void* XREALLOC( void*, size_t ); */
    36     36   #define XREALLOC(x,s) ((void*)ckrealloc((char*)(x),(size_t)(s)))
    37     37   /* MODULE_SCOPE void  XFREE( void* ); */
    38     38   #define XFREE(x) (ckfree((char*)(x)))
    39     39   
    40     40   /* Rename the global symbols in libtommath to avoid linkage conflicts */
    41     41   
    42         -#define KARATSUBA_MUL_CUTOFF TclBNKaratsubaMulCutoff
    43         -#define KARATSUBA_SQR_CUTOFF TclBNKaratsubaSqrCutoff
    44         -#define TOOM_MUL_CUTOFF TclBNToomMulCutoff
    45         -#define TOOM_SQR_CUTOFF TclBNToomSqrCutoff
    46         -
    47     42   #define bn_reverse TclBN_reverse
    48     43   #define fast_s_mp_mul_digs TclBN_fast_s_mp_mul_digs
    49     44   #define fast_s_mp_sqr TclBN_fast_s_mp_sqr
    50     45   #define mp_add TclBN_mp_add
    51     46   #define mp_add_d TclBN_mp_add_d
    52     47   #define mp_and TclBN_mp_and
    53     48   #define mp_clamp TclBN_mp_clamp

Changes to generic/tclUniData.c.

    53     53       7264, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 6560, 6560, 6560,
    54     54       6560, 7296, 6560, 7328, 7360, 6560, 6560, 6560, 6560, 6560, 6560, 6560,
    55     55       6560, 4928, 7392, 7424, 7456, 7488, 4928, 4928, 4928, 7520, 7552, 7584,
    56     56       7616, 224, 224, 224, 7648, 7680, 7712, 1344, 7744, 7776, 7808, 7808,
    57     57       704, 7840, 7872, 7904, 1824, 7936, 4928, 4928, 7968, 4928, 4928, 4928,
    58     58       4928, 4928, 4928, 8000, 8032, 8064, 8096, 3232, 1344, 8128, 4192, 1344,
    59     59       8160, 8192, 8224, 1344, 1344, 8256, 8288, 4928, 8320, 8352, 8384, 8416,
    60         -    4928, 8384, 8448, 4928, 8352, 4928, 4928, 4928, 4928, 4928, 4928, 4928,
           60  +    4928, 8384, 8448, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928,
    61     61       4928, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    62     62       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    63     63       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    64     64       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    65     65       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    66     66       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
    67     67       1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,

Changes to generic/tclUtf.c.

    63     63       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    64     64       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    65     65       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    66     66       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    67     67       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    68     68       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    69     69       2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
    70         -    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
    71         -    4,4,4,4,4,4,4,4,
    72         -    1,1,1,1,1,1,1,1
           70  +    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1
    73     71   };
    74     72   
    75     73   /*
    76     74    *---------------------------------------------------------------------------
    77     75    *
    78     76    * TclUtfCount --
    79     77    *
................................................................................
   442    440   		/* produce high surrogate, advance source pointer */
   443    441   		*chPtr = 0xD800 + high;
   444    442   		return 1;
   445    443   	    }
   446    444   #else
   447    445   	    *chPtr = (((byte & 0x07) << 18) | ((src[1] & 0x3F) << 12)
   448    446   		    | ((src[2] & 0x3F) << 6) | (src[3] & 0x3F));
   449         -	    if ((*chPtr - 0x10000) <= 0xFFFFF) {
          447  +	    if ((unsigned)(*chPtr - 0x10000) <= 0xFFFFF) {
   450    448   		return 4;
   451    449   	    }
   452    450   #endif
   453    451   	}
   454    452   
   455    453   	/*
   456         -	 * A four-byte-character lead-byte not followed by two trail-bytes
          454  +	 * A four-byte-character lead-byte not followed by three trail-bytes
   457    455   	 * represents itself.
   458    456   	 */
   459    457       }
   460    458   
   461    459       *chPtr = byte;
   462    460       return 1;
   463    461   }
................................................................................
   617    615   	p += TclUtfToUniChar(p, &ch);
   618    616   	*w++ = ch;
   619    617       }
   620    618       end += 4;
   621    619       while (p < end) {
   622    620   	if (Tcl_UtfCharComplete(p, end-p)) {
   623    621   	    p += TclUtfToUniChar(p, &ch);
   624         -	} else if (((UCHAR(*p)-0x80)) < 0x20) {
   625         -	    ch = cp1252[UCHAR(*p++)-0x80];
   626    622   	} else {
   627    623   	    ch = UCHAR(*p++);
   628    624   	}
   629    625   	*w++ = ch;
   630    626       }
   631    627       *w = '\0';
   632    628       Tcl_DStringSetLength(dsPtr,
................................................................................
   671    667   	p += TclUtfToWChar(p, &ch);
   672    668   	*w++ = ch;
   673    669       }
   674    670       end += 4;
   675    671       while (p < end) {
   676    672   	if (Tcl_UtfCharComplete(p, end-p)) {
   677    673   	    p += TclUtfToWChar(p, &ch);
   678         -	} else if (((UCHAR(*p)-0x80)) < 0x20) {
   679         -	    ch = cp1252[UCHAR(*p++)-0x80];
   680    674   	} else {
   681    675   	    ch = UCHAR(*p++);
   682    676   	}
   683    677   	*w++ = ch;
   684    678       }
   685    679       *w = '\0';
   686    680       Tcl_DStringSetLength(dsPtr,

Changes to generic/tclUtil.c.

  1650   1650   char
  1651   1651   Tcl_Backslash(
  1652   1652       const char *src,		/* Points to the backslash character of a
  1653   1653   				 * backslash sequence. */
  1654   1654       int *readPtr)		/* Fill in with number of characters read from
  1655   1655   				 * src, unless NULL. */
  1656   1656   {
  1657         -    char buf[TCL_UTF_MAX] = "";
         1657  +    char buf[4] = "";
  1658   1658       Tcl_UniChar ch = 0;
  1659   1659   
  1660   1660       Tcl_UtfBackslash(src, readPtr, buf);
  1661   1661       TclUtfToUniChar(buf, &ch);
  1662   1662       return (char) ch;
  1663   1663   }
  1664   1664   #endif /* !TCL_NO_DEPRECATED */
................................................................................
  2182   2182   	}
  2183   2183   	Tcl_AppendToObj(resPtr, element, elemLength);
  2184   2184   	needSpace = 1;
  2185   2185       }
  2186   2186       return resPtr;
  2187   2187   }
  2188   2188   
         2189  +#if !defined(TCL_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9
  2189   2190   /*
  2190   2191    *----------------------------------------------------------------------
  2191   2192    *
  2192   2193    * Tcl_StringMatch --
  2193   2194    *
  2194   2195    *	See if a particular string matches a particular pattern.
  2195   2196    *
................................................................................
  2200   2201    *
  2201   2202    * Side effects:
  2202   2203    *	None.
  2203   2204    *
  2204   2205    *----------------------------------------------------------------------
  2205   2206    */
  2206   2207   
         2208  +#undef Tcl_StringMatch
  2207   2209   int
  2208   2210   Tcl_StringMatch(
  2209   2211       const char *str,		/* String. */
  2210   2212       const char *pattern)	/* Pattern, which may contain special
  2211   2213   				 * characters. */
  2212   2214   {
  2213   2215       return Tcl_StringCaseMatch(str, pattern, 0);
  2214   2216   }
  2215         -
         2217  +#endif /* TCL_NO_DEPRECATED */
  2216   2218   /*
  2217   2219    *----------------------------------------------------------------------
  2218   2220    *
  2219   2221    * Tcl_StringCaseMatch --
  2220   2222    *
  2221   2223    *	See if a particular string matches a particular pattern. Allows case
  2222   2224    *	insensitivity.
................................................................................
  3442   3444       ClientData clientData,	/* Not used. */
  3443   3445       Tcl_Interp *interp,		/* Interpreter containing variable. */
  3444   3446       const char *name1,		/* Name of variable. */
  3445   3447       const char *name2,		/* Second part of variable name. */
  3446   3448       int flags)			/* Information about what happened. */
  3447   3449   {
  3448   3450       Tcl_Obj *value;
  3449         -    int prec;
         3451  +    Tcl_WideInt prec;
  3450   3452       int *precisionPtr = Tcl_GetThreadData(&precisionKey, sizeof(int));
  3451   3453   
  3452   3454       /*
  3453   3455        * If the variable is unset, then recreate the trace.
  3454   3456        */
  3455   3457   
  3456   3458       if (flags & TCL_TRACE_UNSETS) {
................................................................................
  3482   3484        */
  3483   3485   
  3484   3486       if (Tcl_IsSafe(interp)) {
  3485   3487   	return (char *) "can't modify precision from a safe interpreter";
  3486   3488       }
  3487   3489       value = Tcl_GetVar2Ex(interp, name1, name2, flags & TCL_GLOBAL_ONLY);
  3488   3490       if (value == NULL
  3489         -	    || Tcl_GetIntFromObj(NULL, value, &prec) != TCL_OK
         3491  +	    || Tcl_GetWideIntFromObj(NULL, value, &prec) != TCL_OK
  3490   3492   	    || prec < 0 || prec > TCL_MAX_PREC) {
  3491   3493   	return (char *) "improper value for precision";
  3492   3494       }
  3493         -    *precisionPtr = prec;
         3495  +    *precisionPtr = (int)prec;
  3494   3496       return NULL;
  3495   3497   }
  3496   3498   #endif /* !TCL_NO_DEPRECATED)*/
  3497   3499   
  3498   3500   /*
  3499   3501    *----------------------------------------------------------------------
  3500   3502    *

Changes to generic/tclZlib.c.

   418    418   				 * parsed. */
   419    419       GzipHeader *headerPtr,	/* Where to store the parsed-out values. */
   420    420       int *extraSizePtr)		/* Variable to add the length of header
   421    421   				 * strings (filename, comment) to. */
   422    422   {
   423    423       Tcl_Obj *value;
   424    424       int len, result = TCL_ERROR;
          425  +    Tcl_WideInt wideValue;
   425    426       const char *valueStr;
   426    427       Tcl_Encoding latin1enc;
   427    428       static const char *const types[] = {
   428    429   	"binary", "text"
   429    430       };
   430    431   
   431    432       /*
................................................................................
   481    482       /*
   482    483        * Ignore the 'size' field, since that is controlled by the size of the
   483    484        * input data.
   484    485        */
   485    486   
   486    487       if (GetValue(interp, dictObj, "time", &value) != TCL_OK) {
   487    488   	goto error;
   488         -    } else if (value != NULL && Tcl_GetLongFromObj(interp, value,
   489         -	    (long *) &headerPtr->header.time) != TCL_OK) {
          489  +    } else if (value != NULL && Tcl_GetWideIntFromObj(interp, value,
          490  +	    &wideValue) != TCL_OK) {
   490    491   	goto error;
   491    492       }
          493  +    headerPtr->header.time = wideValue;
   492    494   
   493    495       if (GetValue(interp, dictObj, "type", &value) != TCL_OK) {
   494    496   	goto error;
   495    497       } else if (value != NULL && Tcl_GetIndexFromObj(interp, value, types,
   496    498   	    "type", TCL_EXACT, &headerPtr->header.text) != TCL_OK) {
   497    499   	goto error;
   498    500       }

Changes to library/tzdata/America/Metlakatla.

    43     43       {1446372000 -32400 0 AKST}
    44     44       {1457866800 -28800 1 AKDT}
    45     45       {1478426400 -32400 0 AKST}
    46     46       {1489316400 -28800 1 AKDT}
    47     47       {1509876000 -32400 0 AKST}
    48     48       {1520766000 -28800 1 AKDT}
    49     49       {1541329200 -28800 0 PST}
    50         -    {1552215600 -28800 0 AKDT}
           50  +    {1547978400 -32400 0 AKST}
           51  +    {1552215600 -28800 1 AKDT}
    51     52       {1572775200 -32400 0 AKST}
    52     53       {1583665200 -28800 1 AKDT}
    53     54       {1604224800 -32400 0 AKST}
    54     55       {1615719600 -28800 1 AKDT}
    55     56       {1636279200 -32400 0 AKST}
    56     57       {1647169200 -28800 1 AKDT}
    57     58       {1667728800 -32400 0 AKST}

Changes to library/tzdata/Asia/Gaza.

    36     36       {-102643200 7200 0 EET}
    37     37       {-84330000 10800 1 EEST}
    38     38       {-81313200 10800 0 IST}
    39     39       {142376400 10800 1 IDT}
    40     40       {150843600 7200 0 IST}
    41     41       {167176800 10800 1 IDT}
    42     42       {178664400 7200 0 IST}
           43  +    {334015200 10800 1 IDT}
           44  +    {337644000 7200 0 IST}
           45  +    {452556000 10800 1 IDT}
           46  +    {462232800 7200 0 IST}
    43     47       {482277600 10800 1 IDT}
    44     48       {495579600 7200 0 IST}
    45     49       {516751200 10800 1 IDT}
    46     50       {526424400 7200 0 IST}
    47     51       {545436000 10800 1 IDT}
    48     52       {558478800 7200 0 IST}
    49     53       {576626400 10800 1 IDT}
................................................................................
   109    113       {1445547600 7200 0 EET}
   110    114       {1458946800 10800 1 EEST}
   111    115       {1477692000 7200 0 EET}
   112    116       {1490396400 10800 1 EEST}
   113    117       {1509141600 7200 0 EET}
   114    118       {1521846000 10800 1 EEST}
   115    119       {1540591200 7200 0 EET}
   116         -    {1553295600 10800 1 EEST}
          120  +    {1553900400 10800 1 EEST}
   117    121       {1572040800 7200 0 EET}
   118    122       {1585350000 10800 1 EEST}
   119    123       {1604095200 7200 0 EET}
   120    124       {1616799600 10800 1 EEST}
   121    125       {1635544800 7200 0 EET}
   122    126       {1648249200 10800 1 EEST}
   123    127       {1666994400 7200 0 EET}
   124    128       {1679698800 10800 1 EEST}
   125    129       {1698444000 7200 0 EET}
   126         -    {1711148400 10800 1 EEST}
          130  +    {1711753200 10800 1 EEST}
   127    131       {1729893600 7200 0 EET}
   128         -    {1742598000 10800 1 EEST}
          132  +    {1743202800 10800 1 EEST}
   129    133       {1761343200 7200 0 EET}
   130    134       {1774652400 10800 1 EEST}
   131    135       {1793397600 7200 0 EET}
   132    136       {1806102000 10800 1 EEST}
   133    137       {1824847200 7200 0 EET}
   134    138       {1837551600 10800 1 EEST}
   135    139       {1856296800 7200 0 EET}
   136    140       {1869001200 10800 1 EEST}
   137    141       {1887746400 7200 0 EET}
   138         -    {1900450800 10800 1 EEST}
          142  +    {1901055600 10800 1 EEST}
   139    143       {1919196000 7200 0 EET}
   140         -    {1931900400 10800 1 EEST}
          144  +    {1932505200 10800 1 EEST}
   141    145       {1950645600 7200 0 EET}
   142    146       {1963954800 10800 1 EEST}
   143    147       {1982700000 7200 0 EET}
   144    148       {1995404400 10800 1 EEST}
   145    149       {2014149600 7200 0 EET}
   146    150       {2026854000 10800 1 EEST}
   147    151       {2045599200 7200 0 EET}
   148    152       {2058303600 10800 1 EEST}
   149    153       {2077048800 7200 0 EET}
   150         -    {2089753200 10800 1 EEST}
          154  +    {2090358000 10800 1 EEST}
   151    155       {2108498400 7200 0 EET}
   152    156       {2121807600 10800 1 EEST}
   153    157       {2140552800 7200 0 EET}
   154    158       {2153257200 10800 1 EEST}
   155    159       {2172002400 7200 0 EET}
   156    160       {2184706800 10800 1 EEST}
   157    161       {2203452000 7200 0 EET}
   158    162       {2216156400 10800 1 EEST}
   159    163       {2234901600 7200 0 EET}
   160         -    {2247606000 10800 1 EEST}
          164  +    {2248210800 10800 1 EEST}
   161    165       {2266351200 7200 0 EET}
   162         -    {2279055600 10800 1 EEST}
          166  +    {2279660400 10800 1 EEST}
   163    167       {2297800800 7200 0 EET}
   164    168       {2311110000 10800 1 EEST}
   165    169       {2329855200 7200 0 EET}
   166    170       {2342559600 10800 1 EEST}
   167    171       {2361304800 7200 0 EET}
   168    172       {2374009200 10800 1 EEST}
   169    173       {2392754400 7200 0 EET}
   170    174       {2405458800 10800 1 EEST}
   171    175       {2424204000 7200 0 EET}
   172         -    {2436908400 10800 1 EEST}
          176  +    {2437513200 10800 1 EEST}
   173    177       {2455653600 7200 0 EET}
   174    178       {2468962800 10800 1 EEST}
   175    179       {2487708000 7200 0 EET}
   176    180       {2500412400 10800 1 EEST}
   177    181       {2519157600 7200 0 EET}
   178    182       {2531862000 10800 1 EEST}
   179    183       {2550607200 7200 0 EET}
   180    184       {2563311600 10800 1 EEST}
   181    185       {2582056800 7200 0 EET}
   182         -    {2594761200 10800 1 EEST}
          186  +    {2595366000 10800 1 EEST}
   183    187       {2613506400 7200 0 EET}
   184         -    {2626210800 10800 1 EEST}
          188  +    {2626815600 10800 1 EEST}
   185    189       {2644956000 7200 0 EET}
   186    190       {2658265200 10800 1 EEST}
   187    191       {2677010400 7200 0 EET}
   188    192       {2689714800 10800 1 EEST}
   189    193       {2708460000 7200 0 EET}
   190    194       {2721164400 10800 1 EEST}
   191    195       {2739909600 7200 0 EET}
   192    196       {2752614000 10800 1 EEST}
   193    197       {2771359200 7200 0 EET}
   194         -    {2784063600 10800 1 EEST}
          198  +    {2784668400 10800 1 EEST}
   195    199       {2802808800 7200 0 EET}
   196         -    {2815513200 10800 1 EEST}
          200  +    {2816118000 10800 1 EEST}
   197    201       {2834258400 7200 0 EET}
   198    202       {2847567600 10800 1 EEST}
   199    203       {2866312800 7200 0 EET}
   200    204       {2879017200 10800 1 EEST}
   201    205       {2897762400 7200 0 EET}
   202    206       {2910466800 10800 1 EEST}
   203    207       {2929212000 7200 0 EET}
   204    208       {2941916400 10800 1 EEST}
   205    209       {2960661600 7200 0 EET}
   206         -    {2973366000 10800 1 EEST}
          210  +    {2973970800 10800 1 EEST}
   207    211       {2992111200 7200 0 EET}
   208    212       {3005420400 10800 1 EEST}
   209    213       {3024165600 7200 0 EET}
   210    214       {3036870000 10800 1 EEST}
   211    215       {3055615200 7200 0 EET}
   212    216       {3068319600 10800 1 EEST}
   213    217       {3087064800 7200 0 EET}
   214    218       {3099769200 10800 1 EEST}
   215    219       {3118514400 7200 0 EET}
   216         -    {3131218800 10800 1 EEST}
          220  +    {3131823600 10800 1 EEST}
   217    221       {3149964000 7200 0 EET}
   218         -    {3162668400 10800 1 EEST}
          222  +    {3163273200 10800 1 EEST}
   219    223       {3181413600 7200 0 EET}
   220    224       {3194722800 10800 1 EEST}
   221    225       {3213468000 7200 0 EET}
   222    226       {3226172400 10800 1 EEST}
   223    227       {3244917600 7200 0 EET}
   224    228       {3257622000 10800 1 EEST}
   225    229       {3276367200 7200 0 EET}
   226    230       {3289071600 10800 1 EEST}
   227    231       {3307816800 7200 0 EET}
   228         -    {3320521200 10800 1 EEST}
          232  +    {3321126000 10800 1 EEST}
   229    233       {3339266400 7200 0 EET}
   230    234       {3352575600 10800 1 EEST}
   231    235       {3371320800 7200 0 EET}
   232    236       {3384025200 10800 1 EEST}
   233    237       {3402770400 7200 0 EET}
   234    238       {3415474800 10800 1 EEST}
   235    239       {3434220000 7200 0 EET}
   236    240       {3446924400 10800 1 EEST}
   237    241       {3465669600 7200 0 EET}
   238         -    {3478374000 10800 1 EEST}
          242  +    {3478978800 10800 1 EEST}
   239    243       {3497119200 7200 0 EET}
   240         -    {3509823600 10800 1 EEST}
          244  +    {3510428400 10800 1 EEST}
   241    245       {3528568800 7200 0 EET}
   242    246       {3541878000 10800 1 EEST}
   243    247       {3560623200 7200 0 EET}
   244    248       {3573327600 10800 1 EEST}
   245    249       {3592072800 7200 0 EET}
   246    250       {3604777200 10800 1 EEST}
   247    251       {3623522400 7200 0 EET}
   248    252       {3636226800 10800 1 EEST}
   249    253       {3654972000 7200 0 EET}
   250         -    {3667676400 10800 1 EEST}
          254  +    {3668281200 10800 1 EEST}
   251    255       {3686421600 7200 0 EET}
   252         -    {3699126000 10800 1 EEST}
          256  +    {3699730800 10800 1 EEST}
   253    257       {3717871200 7200 0 EET}
   254    258       {3731180400 10800 1 EEST}
   255    259       {3749925600 7200 0 EET}
   256    260       {3762630000 10800 1 EEST}
   257    261       {3781375200 7200 0 EET}
   258    262       {3794079600 10800 1 EEST}
   259    263       {3812824800 7200 0 EET}
   260    264       {3825529200 10800 1 EEST}
   261    265       {3844274400 7200 0 EET}
   262         -    {3856978800 10800 1 EEST}
          266  +    {3857583600 10800 1 EEST}
   263    267       {3875724000 7200 0 EET}
   264    268       {3889033200 10800 1 EEST}
   265    269       {3907778400 7200 0 EET}
   266    270       {3920482800 10800 1 EEST}
   267    271       {3939228000 7200 0 EET}
   268    272       {3951932400 10800 1 EEST}
   269    273       {3970677600 7200 0 EET}
   270    274       {3983382000 10800 1 EEST}
   271    275       {4002127200 7200 0 EET}
   272         -    {4014831600 10800 1 EEST}
          276  +    {4015436400 10800 1 EEST}
   273    277       {4033576800 7200 0 EET}
   274         -    {4046281200 10800 1 EEST}
          278  +    {4046886000 10800 1 EEST}
   275    279       {4065026400 7200 0 EET}
   276    280       {4078335600 10800 1 EEST}
   277    281       {4097080800 7200 0 EET}
   278    282   }

Changes to library/tzdata/Asia/Hebron.

    36     36       {-102643200 7200 0 EET}
    37     37       {-84330000 10800 1 EEST}
    38     38       {-81313200 10800 0 IST}
    39     39       {142376400 10800 1 IDT}
    40     40       {150843600 7200 0 IST}
    41     41       {167176800 10800 1 IDT}
    42     42       {178664400 7200 0 IST}
           43  +    {334015200 10800 1 IDT}
           44  +    {337644000 7200 0 IST}
           45  +    {452556000 10800 1 IDT}
           46  +    {462232800 7200 0 IST}
    43     47       {482277600 10800 1 IDT}
    44     48       {495579600 7200 0 IST}
    45     49       {516751200 10800 1 IDT}
    46     50       {526424400 7200 0 IST}
    47     51       {545436000 10800 1 IDT}
    48     52       {558478800 7200 0 IST}
    49     53       {576626400 10800 1 IDT}
................................................................................
   108    112       {1445547600 7200 0 EET}
   109    113       {1458946800 10800 1 EEST}
   110    114       {1477692000 7200 0 EET}
   111    115       {1490396400 10800 1 EEST}
   112    116       {1509141600 7200 0 EET}
   113    117       {1521846000 10800 1 EEST}
   114    118       {1540591200 7200 0 EET}
   115         -    {1553295600 10800 1 EEST}
          119  +    {1553900400 10800 1 EEST}
   116    120       {1572040800 7200 0 EET}
   117    121       {1585350000 10800 1 EEST}
   118    122       {1604095200 7200 0 EET}
   119    123       {1616799600 10800 1 EEST}
   120    124       {1635544800 7200 0 EET}
   121    125       {1648249200 10800 1 EEST}
   122    126       {1666994400 7200 0 EET}
   123    127       {1679698800 10800 1 EEST}
   124    128       {1698444000 7200 0 EET}
   125         -    {1711148400 10800 1 EEST}
          129  +    {1711753200 10800 1 EEST}
   126    130       {1729893600 7200 0 EET}
   127         -    {1742598000 10800 1 EEST}
          131  +    {1743202800 10800 1 EEST}
   128    132       {1761343200 7200 0 EET}
   129    133       {1774652400 10800 1 EEST}
   130    134       {1793397600 7200 0 EET}
   131    135       {1806102000 10800 1 EEST}
   132    136       {1824847200 7200 0 EET}
   133    137       {1837551600 10800 1 EEST}
   134    138       {1856296800 7200 0 EET}
   135    139       {1869001200 10800 1 EEST}
   136    140       {1887746400 7200 0 EET}
   137         -    {1900450800 10800 1 EEST}
          141  +    {1901055600 10800 1 EEST}
   138    142       {1919196000 7200 0 EET}
   139         -    {1931900400 10800 1 EEST}
          143  +    {1932505200 10800 1 EEST}
   140    144       {1950645600 7200 0 EET}
   141    145       {1963954800 10800 1 EEST}
   142    146       {1982700000 7200 0 EET}
   143    147       {1995404400 10800 1 EEST}
   144    148       {2014149600 7200 0 EET}
   145    149       {2026854000 10800 1 EEST}
   146    150       {2045599200 7200 0 EET}
   147    151       {2058303600 10800 1 EEST}
   148    152       {2077048800 7200 0 EET}
   149         -    {2089753200 10800 1 EEST}
          153  +    {2090358000 10800 1 EEST}
   150    154       {2108498400 7200 0 EET}
   151    155       {2121807600 10800 1 EEST}
   152    156       {2140552800 7200 0 EET}
   153    157       {2153257200 10800 1 EEST}
   154    158       {2172002400 7200 0 EET}
   155    159       {2184706800 10800 1 EEST}
   156    160       {2203452000 7200 0 EET}
   157    161       {2216156400 10800 1 EEST}
   158    162       {2234901600 7200 0 EET}
   159         -    {2247606000 10800 1 EEST}
          163  +    {2248210800 10800 1 EEST}
   160    164       {2266351200 7200 0 EET}
   161         -    {2279055600 10800 1 EEST}
          165  +    {2279660400 10800 1 EEST}
   162    166       {2297800800 7200 0 EET}
   163    167       {2311110000 10800 1 EEST}
   164    168       {2329855200 7200 0 EET}
   165    169       {2342559600 10800 1 EEST}
   166    170       {2361304800 7200 0 EET}
   167    171       {2374009200 10800 1 EEST}
   168    172       {2392754400 7200 0 EET}
   169    173       {2405458800 10800 1 EEST}
   170    174       {2424204000 7200 0 EET}
   171         -    {2436908400 10800 1 EEST}
          175  +    {2437513200 10800 1 EEST}
   172    176       {2455653600 7200 0 EET}
   173    177       {2468962800 10800 1 EEST}
   174    178       {2487708000 7200 0 EET}
   175    179       {2500412400 10800 1 EEST}
   176    180       {2519157600 7200 0 EET}
   177    181       {2531862000 10800 1 EEST}
   178    182       {2550607200 7200 0 EET}
   179    183       {2563311600 10800 1 EEST}
   180    184       {2582056800 7200 0 EET}
   181         -    {2594761200 10800 1 EEST}
          185  +    {2595366000 10800 1 EEST}
   182    186       {2613506400 7200 0 EET}
   183         -    {2626210800 10800 1 EEST}
          187  +    {2626815600 10800 1 EEST}
   184    188       {2644956000 7200 0 EET}
   185    189       {2658265200 10800 1 EEST}
   186    190       {2677010400 7200 0 EET}
   187    191       {2689714800 10800 1 EEST}
   188    192       {2708460000 7200 0 EET}
   189    193       {2721164400 10800 1 EEST}
   190    194       {2739909600 7200 0 EET}
   191    195       {2752614000 10800 1 EEST}
   192    196       {2771359200 7200 0 EET}
   193         -    {2784063600 10800 1 EEST}
          197  +    {2784668400 10800 1 EEST}
   194    198       {2802808800 7200 0 EET}
   195         -    {2815513200 10800 1 EEST}
          199  +    {2816118000 10800 1 EEST}
   196    200       {2834258400 7200 0 EET}
   197    201       {2847567600 10800 1 EEST}
   198    202       {2866312800 7200 0 EET}
   199    203       {2879017200 10800 1 EEST}
   200    204       {2897762400 7200 0 EET}
   201    205       {2910466800 10800 1 EEST}
   202    206       {2929212000 7200 0 EET}
   203    207       {2941916400 10800 1 EEST}
   204    208       {2960661600 7200 0 EET}
   205         -    {2973366000 10800 1 EEST}
          209  +    {2973970800 10800 1 EEST}
   206    210       {2992111200 7200 0 EET}
   207    211       {3005420400 10800 1 EEST}
   208    212       {3024165600 7200 0 EET}
   209    213       {3036870000 10800 1 EEST}
   210    214       {3055615200 7200 0 EET}
   211    215       {3068319600 10800 1 EEST}
   212    216       {3087064800 7200 0 EET}
   213    217       {3099769200 10800 1 EEST}
   214    218       {3118514400 7200 0 EET}
   215         -    {3131218800 10800 1 EEST}
          219  +    {3131823600 10800 1 EEST}
   216    220       {3149964000 7200 0 EET}
   217         -    {3162668400 10800 1 EEST}
          221  +    {3163273200 10800 1 EEST}
   218    222       {3181413600 7200 0 EET}
   219    223       {3194722800 10800 1 EEST}
   220    224       {3213468000 7200 0 EET}
   221    225       {3226172400 10800 1 EEST}
   222    226       {3244917600 7200 0 EET}
   223    227       {3257622000 10800 1 EEST}
   224    228       {3276367200 7200 0 EET}
   225    229       {3289071600 10800 1 EEST}
   226    230       {3307816800 7200 0 EET}
   227         -    {3320521200 10800 1 EEST}
          231  +    {3321126000 10800 1 EEST}
   228    232       {3339266400 7200 0 EET}
   229    233       {3352575600 10800 1 EEST}
   230    234       {3371320800 7200 0 EET}
   231    235       {3384025200 10800 1 EEST}
   232    236       {3402770400 7200 0 EET}
   233    237       {3415474800 10800 1 EEST}
   234    238       {3434220000 7200 0 EET}
   235    239       {3446924400 10800 1 EEST}
   236    240       {3465669600 7200 0 EET}
   237         -    {3478374000 10800 1 EEST}
          241  +    {3478978800 10800 1 EEST}
   238    242       {3497119200 7200 0 EET}
   239         -    {3509823600 10800 1 EEST}
          243  +    {3510428400 10800 1 EEST}
   240    244       {3528568800 7200 0 EET}
   241    245       {3541878000 10800 1 EEST}
   242    246       {3560623200 7200 0 EET}
   243    247       {3573327600 10800 1 EEST}
   244    248       {3592072800 7200 0 EET}
   245    249       {3604777200 10800 1 EEST}
   246    250       {3623522400 7200 0 EET}
   247    251       {3636226800 10800 1 EEST}
   248    252       {3654972000 7200 0 EET}
   249         -    {3667676400 10800 1 EEST}
          253  +    {3668281200 10800 1 EEST}
   250    254       {3686421600 7200 0 EET}
   251         -    {3699126000 10800 1 EEST}
          255  +    {3699730800 10800 1 EEST}
   252    256       {3717871200 7200 0 EET}
   253    257       {3731180400 10800 1 EEST}
   254    258       {3749925600 7200 0 EET}
   255    259       {3762630000 10800 1 EEST}
   256    260       {3781375200 7200 0 EET}
   257    261       {3794079600 10800 1 EEST}
   258    262       {3812824800 7200 0 EET}
   259    263       {3825529200 10800 1 EEST}
   260    264       {3844274400 7200 0 EET}
   261         -    {3856978800 10800 1 EEST}
          265  +    {3857583600 10800 1 EEST}
   262    266       {3875724000 7200 0 EET}
   263    267       {3889033200 10800 1 EEST}
   264    268       {3907778400 7200 0 EET}
   265    269       {3920482800 10800 1 EEST}
   266    270       {3939228000 7200 0 EET}
   267    271       {3951932400 10800 1 EEST}
   268    272       {3970677600 7200 0 EET}
   269    273       {3983382000 10800 1 EEST}
   270    274       {4002127200 7200 0 EET}
   271         -    {4014831600 10800 1 EEST}
          275  +    {4015436400 10800 1 EEST}
   272    276       {4033576800 7200 0 EET}
   273         -    {4046281200 10800 1 EEST}
          277  +    {4046886000 10800 1 EEST}
   274    278       {4065026400 7200 0 EET}
   275    279       {4078335600 10800 1 EEST}
   276    280       {4097080800 7200 0 EET}
   277    281   }

Changes to library/tzdata/Asia/Jerusalem.

    35     35       {-418262400 7200 0 IST}
    36     36       {-400032000 10800 1 IDT}
    37     37       {-387428400 7200 0 IST}
    38     38       {142380000 10800 1 IDT}
    39     39       {150843600 7200 0 IST}
    40     40       {167176800 10800 1 IDT}
    41     41       {178664400 7200 0 IST}
           42  +    {334015200 10800 1 IDT}
           43  +    {337644000 7200 0 IST}
           44  +    {452556000 10800 1 IDT}
           45  +    {462232800 7200 0 IST}
    42     46       {482277600 10800 1 IDT}
    43     47       {495579600 7200 0 IST}
    44     48       {516751200 10800 1 IDT}
    45     49       {526424400 7200 0 IST}
    46     50       {545436000 10800 1 IDT}
    47     51       {558478800 7200 0 IST}
    48     52       {576626400 10800 1 IDT}

Changes to library/tzdata/Etc/UCT.

     1      1   # created by tools/tclZIC.tcl - do not edit
     2         -
     3         -set TZData(:Etc/UCT) {
     4         -    {-9223372036854775808 0 0 UCT}
            2  +if {![info exists TZData(Etc/UTC)]} {
            3  +    LoadTimeZoneFile Etc/UTC
     5      4   }
            5  +set TZData(:Etc/UCT) $TZData(:Etc/UTC)

Changes to library/tzdata/UCT.

     1      1   # created by tools/tclZIC.tcl - do not edit
     2         -if {![info exists TZData(Etc/UCT)]} {
     3         -    LoadTimeZoneFile Etc/UCT
            2  +if {![info exists TZData(Etc/UTC)]} {
            3  +    LoadTimeZoneFile Etc/UTC
     4      4   }
     5         -set TZData(:UCT) $TZData(:Etc/UCT)
            5  +set TZData(:UCT) $TZData(:Etc/UTC)

Changes to libtommath/bn_mp_get_bit.c.

    23     23   
    24     24      if (b < 0) {
    25     25         return MP_VAL;
    26     26      }
    27     27   
    28     28      limb = b / DIGIT_BIT;
    29     29   
    30         -   /*
    31         -    * Zero is a special value with the member "used" set to zero.
    32         -    * Needs to be tested before the check for the upper boundary
    33         -    * otherwise (limb >= a->used) would be true for a = 0
    34         -    */
    35         -
    36         -   if (mp_iszero(a) != MP_NO) {
    37         -      return MP_NO;
    38         -   }
    39         -
    40     30      if (limb >= a->used) {
    41         -      return MP_VAL;
           31  +      return MP_NO;
    42     32      }
    43     33   
    44     34      bit = (mp_digit)(1) << (b % DIGIT_BIT);
    45     35   
    46     36      isset = a->dp[limb] & bit;
    47     37      return (isset != 0u) ? MP_YES : MP_NO;
    48     38   }
    49     39   
    50     40   #endif
    51     41   
    52     42   /* ref:         $Format:%D$ */
    53     43   /* git commit:  $Format:%H$ */
    54     44   /* commit time: $Format:%ai$ */

Changes to libtommath/bn_mp_get_int.c.

    11     11    *
    12     12    * SPDX-License-Identifier: Unlicense
    13     13    */
    14     14   
    15     15   /* get the lower 32-bits of an mp_int */
    16     16   unsigned long mp_get_int(const mp_int *a)
    17     17   {
    18         -   int i;
    19         -   mp_min_u32 res;
    20         -
    21         -   if (a->used == 0) {
    22         -      return 0;
    23         -   }
    24         -
    25         -   /* get number of digits of the lsb we have to read */
    26         -   i = MIN(a->used, ((((int)sizeof(unsigned long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1;
    27         -
    28         -   /* get most significant digit of result */
    29         -   res = DIGIT(a, i);
    30         -
    31         -   while (--i >= 0) {
    32         -      res = (res << DIGIT_BIT) | DIGIT(a, i);
    33         -   }
    34         -
    35     18      /* force result to 32-bits always so it is consistent on non 32-bit platforms */
    36         -   return res & 0xFFFFFFFFUL;
           19  +   return mp_get_long(a) & 0xFFFFFFFFUL;
    37     20   }
    38     21   #endif
    39     22   
    40     23   /* ref:         $Format:%D$ */
    41     24   /* git commit:  $Format:%H$ */
    42     25   /* commit time: $Format:%ai$ */

Changes to libtommath/tommath.h.

    19     19   #include "tommath_class.h"
    20     20   
    21     21   #ifdef __cplusplus
    22     22   extern "C" {
    23     23   #endif
    24     24   
    25     25   /* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */
    26         -#if defined(_MSC_VER) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__)
           26  +#if defined(_WIN32) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__)
    27     27   #   define MP_32BIT
    28     28   #endif
    29     29   
    30     30   /* detect 64-bit mode if possible */
    31     31   #if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \
    32     32       defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \
    33     33       defined(__s390x__) || defined(__arch64__) || defined(__aarch64__) || \
................................................................................
    87     87   #   else
    88     88   /* default case is 28-bit digits, defines MP_28BIT as a handy macro to test */
    89     89   #      define DIGIT_BIT 28
    90     90   #      define MP_28BIT
    91     91   #   endif
    92     92   #endif
    93     93   
    94         -/* otherwise the bits per digit is calculated automatically from the size of a mp_digit */
    95         -#ifndef DIGIT_BIT
    96         -#   define DIGIT_BIT (((CHAR_BIT * MP_SIZEOF_MP_DIGIT) - 1))  /* bits per digit */
    97         -typedef unsigned long mp_min_u32;
    98         -#else
    99         -typedef mp_digit mp_min_u32;
   100         -#endif
   101         -
   102         -#define MP_DIGIT_BIT     DIGIT_BIT
   103     94   #define MP_MASK          ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1))
   104         -#define MP_DIGIT_MAX     MP_MASK
   105     95   
   106     96   /* equalities */
   107     97   #define MP_LT        -1   /* less than */
   108     98   #define MP_EQ         0   /* equal to */
   109     99   #define MP_GT         1   /* greater than */
   110    100   
   111    101   #define MP_ZPOS       0   /* positive integer */
................................................................................
   123    113   /* Primality generation flags */
   124    114   #define LTM_PRIME_BBS      0x0001 /* BBS style prime */
   125    115   #define LTM_PRIME_SAFE     0x0002 /* Safe prime (p-1)/2 == prime */
   126    116   #define LTM_PRIME_2MSB_ON  0x0008 /* force 2nd MSB to 1 */
   127    117   
   128    118   typedef int           mp_err;
   129    119   
   130         -/* you'll have to tune these... */
   131         -extern int KARATSUBA_MUL_CUTOFF,
   132         -       KARATSUBA_SQR_CUTOFF,
   133         -       TOOM_MUL_CUTOFF,
   134         -       TOOM_SQR_CUTOFF;
   135         -
   136    120   /* define this to use lower memory usage routines (exptmods mostly) */
   137    121   /* #define MP_LOW_MEM */
   138    122   
   139    123   /* default precision */
   140    124   #ifndef MP_PREC
   141    125   #   ifndef MP_LOW_MEM
   142    126   #      define MP_PREC 32        /* default digits of precision */
   143    127   #   else
   144    128   #      define MP_PREC 8         /* default digits of precision */
   145    129   #   endif
   146    130   #endif
   147    131   
   148         -/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */
   149         -#define MP_WARRAY               (1u << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1))
   150         -
   151    132   /* the infamous mp_int structure */
   152    133   typedef struct  {
   153    134      int used, alloc, sign;
   154    135      mp_digit *dp;
   155    136   } mp_int;
   156    137   
   157    138   /* callback for mp_prime_random, should fill dst with random bytes and return how many read [upto len] */
   158    139   typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat);
   159    140   
   160    141   
   161         -#define USED(m)     ((m)->used)
   162         -#define DIGIT(m, k) ((m)->dp[(k)])
   163         -#define SIGN(m)     ((m)->sign)
   164         -
   165    142   /* error code to char* string */
   166    143   const char *mp_error_to_string(int code);
   167    144   
   168    145   /* ---> init and deinit bignum functions <--- */
   169    146   /* init a bignum */
   170    147   int mp_init(mp_int *a);
   171    148   
................................................................................
   188    165   int mp_grow(mp_int *a, int size);
   189    166   
   190    167   /* init to a given number of digits */
   191    168   int mp_init_size(mp_int *a, int size);
   192    169   
   193    170   /* ---> Basic Manipulations <--- */
   194    171   #define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO)
   195         -#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO)
   196         -#define mp_isodd(a)  ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO)
          172  +#define mp_iseven(a) (!mp_get_bit((a),0))
          173  +#define mp_isodd(a)  mp_get_bit((a),0)
   197    174   #define mp_isneg(a)  (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO)
   198    175   
   199    176   /* set to zero */
   200    177   void mp_zero(mp_int *a);
   201    178   
   202    179   /* set to a digit */
   203    180   void mp_set(mp_int *a, mp_digit b);

Changes to libtommath/tommath_private.h.

    38     38   
    39     39   /* define heap macros */
    40     40   #ifndef XMALLOC
    41     41   /* default to libc stuff */
    42     42   #   define XMALLOC   malloc
    43     43   #   define XFREE     free
    44     44   #   define XREALLOC  realloc
    45         -#   define XCALLOC   calloc
    46     45   #elif 0
    47     46   /* prototypes for our heap functions */
    48     47   extern void *XMALLOC(size_t n);
    49     48   extern void *XREALLOC(void *p, size_t n);
    50         -extern void *XCALLOC(size_t n, size_t s);
    51     49   extern void XFREE(void *p);
    52     50   #endif
    53     51   
           52  +/* you'll have to tune these... */
           53  +#define KARATSUBA_MUL_CUTOFF 80      /* Min. number of digits before Karatsuba multiplication is used. */
           54  +#define KARATSUBA_SQR_CUTOFF 120     /* Min. number of digits before Karatsuba squaring is used. */
           55  +#define TOOM_MUL_CUTOFF      350     /* no optimal values of these are known yet so set em high */
           56  +#define TOOM_SQR_CUTOFF      400
           57  +
           58  +/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */
           59  +#define MP_WARRAY               (1u << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1))
           60  +
    54     61   /* lowlevel functions, do not call! */
    55     62   int s_mp_add(const mp_int *a, const mp_int *b, mp_int *c);
    56     63   int s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c);
    57     64   #define s_mp_mul(a, b, c) s_mp_mul_digs(a, b, c, (a)->used + (b)->used + 1)
    58     65   int fast_s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs);
    59     66   int s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs);
    60     67   int fast_s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs);

Changes to macosx/Tcl.xcode/project.pbxproj.

   141    141   		F96D494908F272C3004A47F5 /* bn_mp_toradix_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */; };
   142    142   		F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */; };
   143    143   		F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D008F272B3004A47F5 /* bn_reverse.c */; };
   144    144   		F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */; };
   145    145   		F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; };
   146    146   		F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; };
   147    147   		F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; };
   148         -		F96D495508F272C3004A47F5 /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; };
   149    148   		F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; };
   150    149   		F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; };
   151    150   		F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; };
   152    151   		F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445B08F272B9004A47F5 /* tclLoadDyld.c */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; };
   153    152   		F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445F08F272B9004A47F5 /* tclUnixChan.c */; };
   154    153   		F96D4ACB08F272C9004A47F5 /* tclUnixEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446008F272B9004A47F5 /* tclUnixEvent.c */; };
   155    154   		F96D4ACC08F272C9004A47F5 /* tclUnixFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446108F272B9004A47F5 /* tclUnixFCmd.c */; };
................................................................................
   616    615   		F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_xor.c; sourceTree = "<group>"; };
   617    616   		F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_zero.c; sourceTree = "<group>"; };
   618    617   		F96D42D008F272B3004A47F5 /* bn_reverse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_reverse.c; sourceTree = "<group>"; };
   619    618   		F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_add.c; sourceTree = "<group>"; };
   620    619   		F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_mul_digs.c; sourceTree = "<group>"; };
   621    620   		F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sqr.c; sourceTree = "<group>"; };
   622    621   		F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sub.c; sourceTree = "<group>"; };
   623         -		F96D42D708F272B3004A47F5 /* bncore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bncore.c; sourceTree = "<group>"; };
   624    622   		F96D432908F272B4004A47F5 /* tommath_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_class.h; sourceTree = "<group>"; };
   625    623   		F96D432A08F272B4004A47F5 /* tommath_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_superclass.h; sourceTree = "<group>"; };
   626    624   		F96D432B08F272B4004A47F5 /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = "<group>"; };
   627    625   		F96D432E08F272B5004A47F5 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure.ac; sourceTree = "<group>"; };
   628    626   		F96D432F08F272B5004A47F5 /* GNUmakefile */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = GNUmakefile; sourceTree = "<group>"; };
   629    627   		F96D433108F272B5004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
   630    628   		F96D433208F272B5004A47F5 /* Tcl-Info.plist.in */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = "Tcl-Info.plist.in"; sourceTree = "<group>"; };
................................................................................
  1478   1476   				F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */,
  1479   1477   				F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */,
  1480   1478   				F96D42D008F272B3004A47F5 /* bn_reverse.c */,
  1481   1479   				F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */,
  1482   1480   				F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */,
  1483   1481   				F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */,
  1484   1482   				F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */,
  1485         -				F96D42D708F272B3004A47F5 /* bncore.c */,
  1486   1483   				F96D432908F272B4004A47F5 /* tommath_class.h */,
  1487   1484   				F96D432A08F272B4004A47F5 /* tommath_superclass.h */,
  1488   1485   			);
  1489   1486   			path = libtommath;
  1490   1487   			sourceTree = "<group>";
  1491   1488   		};
  1492   1489   		F96D432C08F272B4004A47F5 /* macosx */ = {
................................................................................
  2110   2107   				F9E61D2D090A48BB002B3151 /* bn_mp_xor.c in Sources */,
  2111   2108   				F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */,
  2112   2109   				F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */,
  2113   2110   				F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */,
  2114   2111   				F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */,
  2115   2112   				F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */,
  2116   2113   				F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */,
  2117         -				F96D495508F272C3004A47F5 /* bncore.c in Sources */,
  2118   2114   				F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */,
  2119   2115   				F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */,
  2120   2116   				F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */,
  2121   2117   				F90509300913A72400327603 /* tclAppInit.c in Sources */,
  2122   2118   				F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */,
  2123   2119   				F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */,
  2124   2120   				F9FC77B80AB29E9100B7077D /* tclUnixCompat.c in Sources */,

Changes to macosx/Tcl.xcodeproj/project.pbxproj.

   141    141   		F96D494908F272C3004A47F5 /* bn_mp_toradix_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */; };
   142    142   		F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */; };
   143    143   		F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D008F272B3004A47F5 /* bn_reverse.c */; };
   144    144   		F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */; };
   145    145   		F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; };
   146    146   		F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; };
   147    147   		F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; };
   148         -		F96D495508F272C3004A47F5 /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; };
   149    148   		F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; };
   150    149   		F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; };
   151    150   		F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; };
   152    151   		F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445B08F272B9004A47F5 /* tclLoadDyld.c */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; };
   153    152   		F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445F08F272B9004A47F5 /* tclUnixChan.c */; };
   154    153   		F96D4ACB08F272C9004A47F5 /* tclUnixEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446008F272B9004A47F5 /* tclUnixEvent.c */; };
   155    154   		F96D4ACC08F272C9004A47F5 /* tclUnixFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446108F272B9004A47F5 /* tclUnixFCmd.c */; };
................................................................................
   617    616   		F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_xor.c; sourceTree = "<group>"; };
   618    617   		F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_zero.c; sourceTree = "<group>"; };
   619    618   		F96D42D008F272B3004A47F5 /* bn_reverse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_reverse.c; sourceTree = "<group>"; };
   620    619   		F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_add.c; sourceTree = "<group>"; };
   621    620   		F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_mul_digs.c; sourceTree = "<group>"; };
   622    621   		F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sqr.c; sourceTree = "<group>"; };
   623    622   		F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sub.c; sourceTree = "<group>"; };
   624         -		F96D42D708F272B3004A47F5 /* bncore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bncore.c; sourceTree = "<group>"; };
   625    623   		F96D432908F272B4004A47F5 /* tommath_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_class.h; sourceTree = "<group>"; };
   626    624   		F96D432A08F272B4004A47F5 /* tommath_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_superclass.h; sourceTree = "<group>"; };
   627    625   		F96D432B08F272B4004A47F5 /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = "<group>"; };
   628    626   		F96D432E08F272B5004A47F5 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure.ac; sourceTree = "<group>"; };
   629    627   		F96D432F08F272B5004A47F5 /* GNUmakefile */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = GNUmakefile; sourceTree = "<group>"; };
   630    628   		F96D433108F272B5004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
   631    629   		F96D433208F272B5004A47F5 /* Tcl-Info.plist.in */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = "Tcl-Info.plist.in"; sourceTree = "<group>"; };
................................................................................
  1479   1477   				F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */,
  1480   1478   				F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */,
  1481   1479   				F96D42D008F272B3004A47F5 /* bn_reverse.c */,
  1482   1480   				F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */,
  1483   1481   				F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */,
  1484   1482   				F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */,
  1485   1483   				F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */,
  1486         -				F96D42D708F272B3004A47F5 /* bncore.c */,
  1487   1484   				F96D432908F272B4004A47F5 /* tommath_class.h */,
  1488   1485   				F96D432A08F272B4004A47F5 /* tommath_superclass.h */,
  1489   1486   			);
  1490   1487   			path = libtommath;
  1491   1488   			sourceTree = "<group>";
  1492   1489   		};
  1493   1490   		F96D432C08F272B4004A47F5 /* macosx */ = {
................................................................................
  2111   2108   				F9E61D2D090A48BB002B3151 /* bn_mp_xor.c in Sources */,
  2112   2109   				F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */,
  2113   2110   				F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */,
  2114   2111   				F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */,
  2115   2112   				F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */,
  2116   2113   				F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */,
  2117   2114   				F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */,
  2118         -				F96D495508F272C3004A47F5 /* bncore.c in Sources */,
  2119   2115   				F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */,
  2120   2116   				F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */,
  2121   2117   				F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */,
  2122   2118   				F90509300913A72400327603 /* tclAppInit.c in Sources */,
  2123   2119   				F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */,
  2124   2120   				F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */,
  2125   2121   				F9FC77B80AB29E9100B7077D /* tclUnixCompat.c in Sources */,

Changes to macosx/tclMacOSXFCmd.c.

   188    188   		OSSwapBigToHostInt32(finder->creator));
   189    189   	break;
   190    190       case MACOSX_TYPE_ATTRIBUTE:
   191    191   	*attributePtrPtr = NewOSTypeObj(
   192    192   		OSSwapBigToHostInt32(finder->type));
   193    193   	break;
   194    194       case MACOSX_HIDDEN_ATTRIBUTE:
   195         -	*attributePtrPtr = Tcl_NewBooleanObj(
          195  +	*attributePtrPtr = Tcl_NewWideIntObj(
   196    196   		(finder->fdFlags & kFinfoIsInvisible) != 0);
   197    197   	break;
   198    198       case MACOSX_RSRCLENGTH_ATTRIBUTE:
   199    199   	*attributePtrPtr = Tcl_NewWideIntObj(*rsrcForkSize);
   200    200   	break;
   201    201       }
   202    202       return TCL_OK;
................................................................................
   576    576       OSType *osTypePtr)		/* Place to store resulting OSType. */
   577    577   {
   578    578       int result = TCL_OK;
   579    579   
   580    580       if (!TclHasIntRep(objPtr, &tclOSTypeType)) {
   581    581   	result = SetOSTypeFromAny(interp, objPtr);
   582    582       }
   583         -    *osTypePtr = (OSType) objPtr->internalRep.longValue;
          583  +    *osTypePtr = (OSType) objPtr->internalRep.wideValue;
   584    584       return result;
   585    585   }
   586    586   
   587    587   /*
   588    588    *----------------------------------------------------------------------
   589    589    *
   590    590    * NewOSTypeObj --
................................................................................
   605    605       const OSType osType)	/* OSType used to initialize the new
   606    606   				 * object. */
   607    607   {
   608    608       Tcl_Obj *objPtr;
   609    609   
   610    610       TclNewObj(objPtr);
   611    611       TclInvalidateStringRep(objPtr);
   612         -    objPtr->internalRep.longValue = (long) osType;
          612  +    objPtr->internalRep.wideValue = (Tcl_WideInt) osType;
   613    613       objPtr->typePtr = &tclOSTypeType;
   614    614       return objPtr;
   615    615   }
   616    616   
   617    617   /*
   618    618    *----------------------------------------------------------------------
   619    619    *
................................................................................
   656    656   
   657    657   	memcpy(bytes, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds));
   658    658   	osType = (OSType) bytes[0] << 24 |
   659    659   		 (OSType) bytes[1] << 16 |
   660    660   		 (OSType) bytes[2] <<  8 |
   661    661   		 (OSType) bytes[3];
   662    662   	TclFreeIntRep(objPtr);
   663         -	objPtr->internalRep.longValue = (long) osType;
          663  +	objPtr->internalRep.wideValue = (Tcl_WideInt) osType;
   664    664   	objPtr->typePtr = &tclOSTypeType;
   665    665       }
   666    666       Tcl_DStringFree(&ds);
   667    667       Tcl_FreeEncoding(encoding);
   668    668       return result;
   669    669   }
   670    670   
................................................................................
   690    690   static void
   691    691   UpdateStringOfOSType(
   692    692       register Tcl_Obj *objPtr)	/* OSType object whose string rep to
   693    693   				 * update. */
   694    694   {
   695    695       const int size = TCL_UTF_MAX * 4;
   696    696       char *dst = Tcl_InitStringRep(objPtr, NULL, size);
   697         -    OSType osType = (OSType) objPtr->internalRep.longValue;
          697  +    OSType osType = (OSType) objPtr->internalRep.wideValue;
   698    698       int written = 0;
   699    699       Tcl_Encoding encoding;
   700    700       char src[5];
   701    701   
   702    702       TclOOM(dst, size);
   703    703   
   704    704       src[0] = (char) (osType >> 24);

Changes to tests-perf/clock.perf.tcl.

     1      1   #!/usr/bin/tclsh
     2      2   # ------------------------------------------------------------------------
     3      3   #
     4      4   # test-performance.tcl --
     5         -# 
            5  +#
     6      6   #  This file provides common performance tests for comparison of tcl-speed
     7      7   #  degradation by switching between branches.
     8      8   #  (currently for clock ensemble only)
     9      9   #
    10     10   # ------------------------------------------------------------------------
    11         -# 
           11  +#
    12     12   # Copyright (c) 2014 Serg G. Brester (aka sebres)
    13         -# 
           13  +#
    14     14   # See the file "license.terms" for information on usage and redistribution
    15     15   # of this file.
    16         -# 
           16  +#
    17     17   
    18     18   array set in {-time 500}
    19     19   if {[info exists ::argv0] && [file tail $::argv0] eq [file tail [info script]]} {
    20     20     array set in $argv
    21     21   }
    22     22   
    23     23   ## common test performance framework:
................................................................................
   211    211       {clock scan "5 years 18 months 385 days next 1 January" -base 0 -gmt 1}
   212    212       # FreeScan : relative date with ordinal month and relative weekday
   213    213       {clock scan "5 years 18 months 385 days next January Fri" -base 0 -gmt 1}
   214    214       # FreeScan : ordinal month
   215    215       {clock scan "next January" -base 0 -gmt 1}
   216    216       # FreeScan : relative week
   217    217       {clock scan "next Fri" -base 0 -gmt 1}
   218         -    # FreeScan : relative weekday and week offset 
          218  +    # FreeScan : relative weekday and week offset
   219    219       {clock scan "next January + 2 week" -base 0 -gmt 1}
   220    220       # FreeScan : time only with base
   221    221       {clock scan "19:18:30" -base 148863600 -gmt 1}
   222    222       # FreeScan : time only without base, gmt
   223    223       {clock scan "19:18:30" -gmt 1}
   224    224       # FreeScan : time only without base, system
   225    225       {clock scan "19:18:30"}
................................................................................
   296    296       {clock format [clock scan "19:18:30" -base 148863600 -timezone EST] -timezone MST}
   297    297       {clock format [clock scan "19:18:30" -base 148863600 -timezone MST] -timezone EST}
   298    298       # Convert TZ: included in scan string & format
   299    299       {clock format [clock scan "19:18:30 EST" -base 148863600] -format "%H:%M:%S %z" -timezone MST}
   300    300       {clock format [clock scan "19:18:30 EST" -base 148863600] -format "%H:%M:%S %z" -timezone EST}
   301    301   
   302    302       # Format locale 1x: comparison values
   303         -    {clock format 0 -gmt 1 -locale en} 
          303  +    {clock format 0 -gmt 1 -locale en}
   304    304       {clock format 0 -gmt 1 -locale de}
   305    305       {clock format 0 -gmt 1 -locale fr}
   306    306       # Format locale 2x: without switching locale (en, en)
   307    307       {clock format 0 -gmt 1 -locale en; clock format 0 -gmt 1 -locale en}
   308    308       # Format locale 2x: with switching locale (en, de)
   309    309       {clock format 0 -gmt 1 -locale en; clock format 0 -gmt 1 -locale de}
   310    310       # Format locale 3x: without switching locale (en, en, en)
................................................................................
   336    336       # FreeScan TZ 2x (+1 system-default): without switching TZ
   337    337       {clock scan "19:18:30 MST" -base 148863600; clock scan "19:18:30 MST" -base 148863600}
   338    338       {clock scan "19:18:30 EST" -base 148863600; clock scan "19:18:30 EST" -base 148863600}
   339    339       # FreeScan TZ 2x (+1 system-default): with switching TZ
   340    340       {clock scan "19:18:30 MST" -base 148863600; clock scan "19:18:30 EST" -base 148863600}
   341    341       # FreeScan TZ 2x (+1 gmt, +1 system-default)
   342    342       {clock scan "19:18:30 MST" -base 148863600 -gmt 1; clock scan "19:18:30 EST" -base 148863600}
   343         -    
          343  +
   344    344       # Scan TZ: comparison included in scan string vs. given
   345    345       {clock scan "2009-06-30T18:30:00 CEST" -format "%Y-%m-%dT%H:%M:%S %z"}
   346    346       {clock scan "2009-06-30T18:30:00 CET" -format "%Y-%m-%dT%H:%M:%S %z"}
   347    347       {clock scan "2009-06-30T18:30:00" -timezone CET -format "%Y-%m-%dT%H:%M:%S"}
   348    348     }
   349    349   }
   350    350   

Changes to tests-perf/test-performance.tcl.

     1      1   # ------------------------------------------------------------------------
     2      2   #
     3      3   # test-performance.tcl --
     4         -# 
            4  +#
     5      5   #  This file provides common performance tests for comparison of tcl-speed
     6      6   #  degradation or regression by switching between branches.
     7      7   #
     8      8   #  To execute test case evaluate direct corresponding file "tests-perf\*.perf.tcl".
     9      9   #
    10     10   # ------------------------------------------------------------------------
    11         -# 
           11  +#
    12     12   # Copyright (c) 2014 Serg G. Brester (aka sebres)
    13         -# 
           13  +#
    14     14   # See the file "license.terms" for information on usage and redistribution
    15     15   # of this file.
    16         -# 
           16  +#
    17     17   
    18     18   namespace eval ::tclTestPerf {
    19     19   # warm-up interpeter compiler env, calibrate timerate measurement functionality:
    20     20   
    21     21   # if no timerate here - import from unsupported:
    22     22   if {[namespace which -command timerate] eq {}} {
    23     23     namespace inscope ::tcl::unsupported {namespace export timerate}
................................................................................
    29     29     puts -nonewline "Calibration ... "; flush stdout
    30     30     puts "done: [lrange \
    31     31       [timerate -calibrate {}] \
    32     32     0 1]"
    33     33   }
    34     34   
    35     35   proc {**STOP**} {args} {
    36         -  return -code error -level 4 "**STOP** in [info level [expr {[info level]-2}]] [join $args { }]" 
           36  +  return -code error -level 4 "**STOP** in [info level [expr {[info level]-2}]] [join $args { }]"
    37     37   }
    38     38   
    39     39   proc _test_get_commands {lst} {
    40     40     regsub -all {(?:^|\n)[ \t]*(\#[^\n]*|\msetup\M[^\n]*|\mcleanup\M[^\n]*)(?=\n\s*(?:[\{\#]|setup|cleanup|$))} $lst "\n{\\1}"
    41     41   }
    42     42   
    43     43   proc _test_out_total {} {

Changes to tests-perf/timer-event.perf.tcl.

     1      1   #!/usr/bin/tclsh
     2      2   
     3      3   # ------------------------------------------------------------------------
     4      4   #
     5      5   # timer-event.perf.tcl --
     6         -# 
            6  +#
     7      7   #  This file provides performance tests for comparison of tcl-speed
     8      8   #  of timer events (event-driven tcl-handling).
     9      9   #
    10     10   # ------------------------------------------------------------------------
    11         -# 
           11  +#
    12     12   # Copyright (c) 2014 Serg G. Brester (aka sebres)
    13         -# 
           13  +#
    14     14   # See the file "license.terms" for information on usage and redistribution
    15     15   # of this file.
    16         -# 
           16  +#
    17     17   
    18     18   
    19     19   if {![namespace exists ::tclTestPerf]} {
    20     20     source [file join [file dirname [info script]] test-performance.tcl]
    21     21   }
    22     22   
    23     23   
................................................................................
    36     36     puts "*** up to $howmuch events ***"
    37     37     # single iteration by update, so using -no-result (measure only):
    38     38     _test_run -no-result $reptime [string map [list \{*\}\$reptime $reptime \$howmuch $howmuch \\# \#] {
    39     39       # generate up to $howmuch idle-events:
    40     40       {after idle {set foo bar}}
    41     41       # update / after idle:
    42     42       {update; if {![llength [after info]]} break}
    43         -    
           43  +
    44     44       # generate up to $howmuch idle-events:
    45     45       {after idle {set foo bar}}
    46     46       # update idletasks / after idle:
    47     47       {update idletasks; if {![llength [after info]]} break}
    48     48   
    49     49       # generate up to $howmuch immediate events:
    50     50       {after 0 {set foo bar}}
    51     51       # update / after 0:
    52     52       {update; if {![llength [after info]]} break}
    53         -    
           53  +
    54     54       # generate up to $howmuch 1-ms events:
    55     55       {after 1 {set foo bar}}
    56     56       setup {after 1}
    57     57       # update / after 1:
    58     58       {update; if {![llength [after info]]} break}
    59     59   
    60     60       # generate up to $howmuch immediate events (+ 1 event of the second generation):
................................................................................
    79     79       {after cancel $ev([incr i]); if {$i >= $le} break}
    80     80       cleanup {update; unset -nocomplain ev}
    81     81       # cancel backwards "after 0" / $howmuch timer-events in queue:
    82     82       setup {set i 0; timerate {set ev([incr i]) [after 0 {set foo bar}]} {*}$reptime}
    83     83       setup {set le $i; incr i; list $le .. 1; # cancel up to $howmuch events}
    84     84       {after cancel $ev([incr i -1]); if {$i <= 1} break}
    85     85       cleanup {update; unset -nocomplain ev}
    86         -    
           86  +
    87     87       # end $howmuch events.
    88     88       cleanup {if [llength [after info]] {error "unexpected: [llength [after info]] events are still there."}}
    89     89     }]
    90     90   }
    91     91   
    92     92   proc test-access {{reptime {1000 5000}}} {
    93     93     set howmuch [lindex $reptime 1]
................................................................................
   145    145   
   146    146   proc test-long {{reptime 1000}} {
   147    147     _test_run $reptime {
   148    148       # in-between important event by amount of idle events:
   149    149       {time {after idle {after 30}} 10; after 1 {set important 1}; vwait important;}
   150    150       cleanup {foreach i [after info] {after cancel $i}}
   151    151       # in-between important event (of new generation) by amount of idle events:
   152         -    {time {after idle {after 30}} 10; after 1 {after 0 {set important 1}}; vwait important;} 
          152  +    {time {after idle {after 30}} 10; after 1 {after 0 {set important 1}}; vwait important;}
   153    153       cleanup {foreach i [after info] {after cancel $i}}
   154    154     }
   155    155   }
   156    156   
   157    157   proc test {{reptime 1000}} {
   158    158     test-exec $reptime
   159    159     foreach howmuch {5000 50000} {

Changes to tests/cmdMZ.test.

   356    356   } {1 {expected integer but got "b"}}
   357    357   test cmdMZ-6.3 {Tcl_TimeRateObjCmd: basic format of command} {
   358    358       list [catch {timerate -overhead b {} a b} msg] $msg
   359    359   } {1 {expected floating-point number but got "b"}}
   360    360   test cmdMZ-6.4 {Tcl_TimeRateObjCmd: compile of script happens even with negative iteration counts} {
   361    361       list [catch {timerate "foreach a {c d e} \{" -12456} msg] $msg
   362    362   } {1 {missing close-brace}}
   363         -test cmdMZ-6.5 {Tcl_TimeRateObjCmd: result format and one iteration} {
   364         -    regexp {^\d+.\d+ \ws/# 1 # \d+ #/sec \d+.\d+ nett-ms$} [timerate {} 0]
          363  +test cmdMZ-6.5a {Tcl_TimeRateObjCmd: result format and one iteration} {
          364  +    regexp {^\d+(?:\.\d+)? \ws/# 1 # \d+(?:\.\d+)? #/sec \d+(?:\.\d+)? nett-ms$} [timerate {} 0]
          365  +} 1
          366  +test cmdMZ-6.5b {Tcl_TimeRateObjCmd: result format without iterations} {
          367  +    regexp {^0 \ws/# 0 # 0 #/sec 0 nett-ms$} [timerate {} 0 0]
   365    368   } 1
   366    369   test cmdMZ-6.6 {Tcl_TimeRateObjCmd: slower commands take longer, but it remains almost the same time of measument} {
   367    370       set m1 [timerate {after 0} 20]
   368    371       set m2 [timerate {after 1} 20]
   369    372       list \
   370    373   	[expr {[lindex $m1 0] < [lindex $m2 0]}] \
   371    374   	[expr {[lindex $m1 0] < 100}] \

Changes to tests/expr.test.

  1103   1103   test expr-23.54.10 {INST_EXPON: Bug 2798543} {
  1104   1104       expr {3**19 == 3**65555}
  1105   1105   } 0
  1106   1106   test expr-23.54.11 {INST_EXPON: Bug 2798543} {
  1107   1107       expr {3**9 == 3**131081}
  1108   1108   } 0
  1109   1109   test expr-23.54.12 {INST_EXPON: Bug 2798543} -body {
  1110         -    expr {3**9 == 3**268435465}
         1110  +    expr {3**268435456}
  1111   1111   } -returnCodes error -result {exponent too large}
  1112   1112   test expr-23.54.13 {INST_EXPON: Bug 2798543} {
  1113   1113       expr {(-3)**9 == (-3)**65545}
  1114   1114   } 0
  1115   1115   test expr-23.55.0 {INST_EXPON: Bug 2798543} {
  1116   1116       expr {4**9 == 4**65545}
  1117   1117   } 0
................................................................................
  1118   1118   test expr-23.55.1 {INST_EXPON: Bug 2798543} {
  1119   1119       expr {4**15 == 4**65551}
  1120   1120   } 0
  1121   1121   test expr-23.55.2 {INST_EXPON: Bug 2798543} {
  1122   1122       expr {4**9 == 4**131081}
  1123   1123   } 0
  1124   1124   test expr-23.55.3 {INST_EXPON: Bug 2798543} -body {
  1125         -    expr {4**9 == 4**268435465}
         1125  +    expr {4**268435456}
  1126   1126   } -returnCodes error -result {exponent too large}
  1127   1127   test expr-23.55.4 {INST_EXPON: Bug 2798543} {
  1128   1128       expr {(-4)**9 == (-4)**65545}
  1129   1129   } 0
  1130   1130   test expr-23.56.0 {INST_EXPON: Bug 2798543} {
  1131   1131       expr {5**9 == 5**65545}
  1132   1132   } 0
................................................................................
  1133   1133   test expr-23.56.1 {INST_EXPON: Bug 2798543} {
  1134   1134       expr {5**13 == 5**65549}
  1135   1135   } 0
  1136   1136   test expr-23.56.2 {INST_EXPON: Bug 2798543} {
  1137   1137       expr {5**9 == 5**131081}
  1138   1138   } 0
  1139   1139   test expr-23.56.3 {INST_EXPON: Bug 2798543} -body {
  1140         -    expr {5**9 == 5**268435465}
         1140  +    expr {5**268435456}
  1141   1141   } -returnCodes error -result {exponent too large}
  1142   1142   test expr-23.56.4 {INST_EXPON: Bug 2798543} {
  1143   1143       expr {(-5)**9 == (-5)**65545}
  1144   1144   } 0
  1145   1145   test expr-23.57.0 {INST_EXPON: Bug 2798543} {
  1146   1146       expr {6**9 == 6**65545}
  1147   1147   } 0
................................................................................
  1148   1148   test expr-23.57.1 {INST_EXPON: Bug 2798543} {
  1149   1149       expr {6**11 == 6**65547}
  1150   1150   } 0
  1151   1151   test expr-23.57.2 {INST_EXPON: Bug 2798543} {
  1152   1152       expr {6**9 == 6**131081}
  1153   1153   } 0
  1154   1154   test expr-23.57.3 {INST_EXPON: Bug 2798543} -body {
  1155         -    expr {6**9 == 6**268435465}
         1155  +    expr {6**268435456}
  1156   1156   } -returnCodes error -result {exponent too large}
  1157   1157   test expr-23.57.4 {INST_EXPON: Bug 2798543} {
  1158   1158       expr {(-6)**9 == (-6)**65545}
  1159   1159   } 0
  1160   1160   test expr-23.58.0 {INST_EXPON: Bug 2798543} {
  1161   1161       expr {7**9 == 7**65545}
  1162   1162   } 0
................................................................................
  1163   1163   test expr-23.58.1 {INST_EXPON: Bug 2798543} {
  1164   1164       expr {7**11 == 7**65547}
  1165   1165   } 0
  1166   1166   test expr-23.58.2 {INST_EXPON: Bug 2798543} {
  1167   1167       expr {7**9 == 7**131081}
  1168   1168   } 0
  1169   1169   test expr-23.58.3 {INST_EXPON: Bug 2798543} -body {
  1170         -    expr {7**9 == 7**268435465}
         1170  +    expr {7**268435456}
  1171   1171   } -returnCodes error -result {exponent too large}
  1172   1172   test expr-23.58.4 {INST_EXPON: Bug 2798543} {
  1173   1173       expr {(-7)**9 == (-7)**65545}
  1174   1174   } 0
  1175   1175   test expr-23.59.0 {INST_EXPON: Bug 2798543} {
  1176   1176       expr {8**9 == 8**65545}
  1177   1177   } 0
................................................................................
  1178   1178   test expr-23.59.1 {INST_EXPON: Bug 2798543} {
  1179   1179       expr {8**10 == 8**65546}
  1180   1180   } 0
  1181   1181   test expr-23.59.2 {INST_EXPON: Bug 2798543} {
  1182   1182       expr {8**9 == 8**131081}
  1183   1183   } 0
  1184   1184   test expr-23.59.3 {INST_EXPON: Bug 2798543} -body {
  1185         -    expr {8**9 == 8**268435465}
         1185  +    expr {8**268435456}
  1186   1186   } -returnCodes error -result {exponent too large}
  1187   1187   test expr-23.59.4 {INST_EXPON: Bug 2798543} {
  1188   1188       expr {(-8)**9 == (-8)**65545}
  1189   1189   } 0
  1190   1190   test expr-23.60.0 {INST_EXPON: Bug 2798543} {
  1191   1191       expr {9**9 == 9**65545}
  1192   1192   } 0
  1193   1193   test expr-23.60.1 {INST_EXPON: Bug 2798543} {
  1194   1194       expr {9**9 == 9**131081}
  1195   1195   } 0
  1196   1196   test expr-23.60.2 {INST_EXPON: Bug 2798543} -body {
  1197         -    expr {9**9 == 9**268435465}
         1197  +    expr {9**268435456}
  1198   1198   } -returnCodes error -result {exponent too large}
  1199   1199   test expr-23.60.3 {INST_EXPON: Bug 2798543} {
  1200   1200       expr {(-9)**9 == (-9)**65545}
  1201   1201   } 0
  1202   1202   test expr-23.61.0 {INST_EXPON: Bug 2798543} {
  1203   1203       expr {10**9 == 10**65545}
  1204   1204   } 0
  1205   1205   test expr-23.61.1 {INST_EXPON: Bug 2798543} {
  1206   1206       expr {10**9 == 10**131081}
  1207   1207   } 0
  1208   1208   test expr-23.61.2 {INST_EXPON: Bug 2798543} -body {
  1209         -    expr {10**9 == 10**268435465}
         1209  +    expr {10**268435456}
  1210   1210   } -returnCodes error -result {exponent too large}
  1211   1211   test expr-23.61.3 {INST_EXPON: Bug 2798543} {
  1212   1212       expr {(-10)**9 == (-10)**65545}
  1213   1213   } 0
  1214   1214   test expr-23.62.0 {INST_EXPON: Bug 2798543} {
  1215   1215       expr {11**9 == 11**65545}
  1216   1216   } 0
  1217   1217   test expr-23.62.1 {INST_EXPON: Bug 2798543} {
  1218   1218       expr {11**9 == 11**131081}
  1219   1219   } 0
  1220   1220   test expr-23.62.2 {INST_EXPON: Bug 2798543} -body {
  1221         -    expr {11**9 == 11**268435465}
         1221  +    expr {11**268435456}
  1222   1222   } -returnCodes error -result {exponent too large}
  1223   1223   test expr-23.62.3 {INST_EXPON: Bug 2798543} {
  1224   1224       expr {(-11)**9 == (-11)**65545}
  1225   1225   } 0
  1226   1226   test expr-23.63.0 {INST_EXPON: Bug 2798543} {
  1227   1227       expr {3**20 == 3**65556}
  1228   1228   } 0
................................................................................
  1229   1229   test expr-23.63.1 {INST_EXPON: Bug 2798543} {
  1230   1230       expr {3**39 == 3**65575}
  1231   1231   } 0
  1232   1232   test expr-23.63.2 {INST_EXPON: Bug 2798543} {
  1233   1233       expr {3**20 == 3**131092}
  1234   1234   } 0
  1235   1235   test expr-23.63.3 {INST_EXPON: Bug 2798543} -body {
  1236         -    expr {3**20 == 3**268435476}
         1236  +    expr {3**268435456}
  1237   1237   } -returnCodes error -result {exponent too large}
  1238   1238   test expr-23.63.4 {INST_EXPON: Bug 2798543} {
  1239   1239       expr {(-3)**20 == (-3)**65556}
  1240   1240   } 0
  1241   1241   test expr-23.64.0 {INST_EXPON: Bug 2798543} {
  1242   1242       expr {4**17 == 4**65553}
  1243   1243   } 0
................................................................................
  1244   1244   test expr-23.64.1 {INST_EXPON: Bug 2798543} {
  1245   1245       expr {4**31 == 4**65567}
  1246   1246   } 0
  1247   1247   test expr-23.64.2 {INST_EXPON: Bug 2798543} {
  1248   1248       expr {4**17 == 4**131089}
  1249   1249   } 0
  1250   1250   test expr-23.64.3 {INST_EXPON: Bug 2798543} -body {
  1251         -    expr {4**17 == 4**268435473}
         1251  +    expr {4**268435456}
  1252   1252   } -returnCodes error -result {exponent too large}
  1253   1253   test expr-23.64.4 {INST_EXPON: Bug 2798543} {
  1254   1254       expr {(-4)**17 == (-4)**65553}
  1255   1255   } 0
  1256   1256   test expr-23.65.0 {INST_EXPON: Bug 2798543} {
  1257   1257       expr {5**17 == 5**65553}
  1258   1258   } 0
................................................................................
  1259   1259   test expr-23.65.1 {INST_EXPON: Bug 2798543} {
  1260   1260       expr {5**27 == 5**65563}
  1261   1261   } 0
  1262   1262   test expr-23.65.2 {INST_EXPON: Bug 2798543} {
  1263   1263       expr {5**17 == 5**131089}
  1264   1264   } 0
  1265   1265   test expr-23.65.3 {INST_EXPON: Bug 2798543} -body {
  1266         -    expr {5**17 == 5**268435473}
         1266  +    expr {5**268435456}
  1267   1267   } -returnCodes error -result {exponent too large}
  1268   1268   test expr-23.65.4 {INST_EXPON: Bug 2798543} {
  1269   1269       expr {(-5)**17 == (-5)**65553}
  1270   1270   } 0
  1271   1271   test expr-23.66.0 {INST_EXPON: Bug 2798543} {
  1272   1272       expr {6**17 == 6**65553}
  1273   1273   } 0
................................................................................
  1274   1274   test expr-23.66.1 {INST_EXPON: Bug 2798543} {
  1275   1275       expr {6**24 == 6**65560}
  1276   1276   } 0
  1277   1277   test expr-23.66.2 {INST_EXPON: Bug 2798543} {
  1278   1278       expr {6**17 == 6**131089}
  1279   1279   } 0
  1280   1280   test expr-23.66.3 {INST_EXPON: Bug 2798543} -body {
  1281         -    expr {6**17 == 6**268435473}
         1281  +    expr {6**268435456}
  1282   1282   } -returnCodes error -result {exponent too large}
  1283   1283   test expr-23.66.4 {INST_EXPON: Bug 2798543} {
  1284   1284       expr {(-6)**17 == (-6)**65553}
  1285   1285   } 0
  1286   1286   test expr-23.67.0 {INST_EXPON: Bug 2798543} {
  1287   1287       expr {7**17 == 7**65553}
  1288   1288   } 0
................................................................................
  1289   1289   test expr-23.67.1 {INST_EXPON: Bug 2798543} {
  1290   1290       expr {7**22 == 7**65558}
  1291   1291   } 0
  1292   1292   test expr-23.67.2 {INST_EXPON: Bug 2798543} {
  1293   1293       expr {7**17 == 7**131089}
  1294   1294   } 0
  1295   1295   test expr-23.67.3 {INST_EXPON: Bug 2798543} -body {
  1296         -    expr {7**17 == 7**268435473}
         1296  +    expr {7**268435456}
  1297   1297   } -returnCodes error -result {exponent too large}
  1298   1298   test expr-23.67.4 {INST_EXPON: Bug 2798543} {
  1299   1299       expr {(-7)**17 == (-7)**65553}
  1300   1300   } 0
  1301   1301   test expr-23.68.0 {INST_EXPON: Bug 2798543} {
  1302   1302       expr {8**17 == 8**65553}
  1303   1303   } 0
................................................................................
  1304   1304   test expr-23.68.1 {INST_EXPON: Bug 2798543} {
  1305   1305       expr {8**20 == 8**65556}
  1306   1306   } 0
  1307   1307   test expr-23.68.2 {INST_EXPON: Bug 2798543} {
  1308   1308       expr {8**17 == 8**131089}
  1309   1309   } 0
  1310   1310   test expr-23.68.3 {INST_EXPON: Bug 2798543} -body {
  1311         -    expr {8**17 == 8**268435473}
         1311  +    expr {8**268435456}
  1312   1312   } -returnCodes error -result {exponent too large}
  1313   1313   test expr-23.68.4 {INST_EXPON: Bug 2798543} {
  1314   1314       expr {(-8)**17 == (-8)**65553}
  1315   1315   } 0
  1316   1316   test expr-23.69.0 {INST_EXPON: Bug 2798543} {
  1317   1317       expr {9**17 == 9**65553}
  1318   1318   } 0
................................................................................
  1319   1319   test expr-23.69.1 {INST_EXPON: Bug 2798543} {
  1320   1320       expr {9**19 == 9**65555}
  1321   1321   } 0
  1322   1322   test expr-23.69.2 {INST_EXPON: Bug 2798543} {
  1323   1323       expr {9**17 == 9**131089}
  1324   1324   } 0
  1325   1325   test expr-23.69.3 {INST_EXPON: Bug 2798543} -body {
  1326         -    expr {9**17 == 9**268435473}
         1326  +    expr {9**268435456}
  1327   1327   } -returnCodes error -result {exponent too large}
  1328   1328   test expr-23.69.4 {INST_EXPON: Bug 2798543} {
  1329   1329       expr {(-9)**17 == (-9)**65553}
  1330   1330   } 0
  1331   1331   test expr-23.70.0 {INST_EXPON: Bug 2798543} {
  1332   1332       expr {10**17 == 10**65553}
  1333   1333   } 0
................................................................................
  1334   1334   test expr-23.70.1 {INST_EXPON: Bug 2798543} {
  1335   1335       expr {10**18 == 10**65554}
  1336   1336   } 0
  1337   1337   test expr-23.70.2 {INST_EXPON: Bug 2798543} {
  1338   1338       expr {10**17 == 10**131089}
  1339   1339   } 0
  1340   1340   test expr-23.70.3 {INST_EXPON: Bug 2798543} -body {
  1341         -    expr {10**17 == 10**268435473}
         1341  +    expr {10**268435456}
  1342   1342   } -returnCodes error -result {exponent too large}
  1343   1343   test expr-23.70.4 {INST_EXPON: Bug 2798543} {
  1344   1344       expr {(-10)**17 == (-10)**65553}
  1345   1345   } 0
  1346   1346   test expr-23.71.0 {INST_EXPON: Bug 2798543} {
  1347   1347       expr {11**17 == 11**65553}
  1348   1348   } 0
................................................................................
  1349   1349   test expr-23.71.1 {INST_EXPON: Bug 2798543} {
  1350   1350       expr {11**18 == 11**65554}
  1351   1351   } 0
  1352   1352   test expr-23.71.2 {INST_EXPON: Bug 2798543} {
  1353   1353       expr {11**17 == 11**131089}
  1354   1354   } 0
  1355   1355   test expr-23.71.3 {INST_EXPON: Bug 2798543} -body {
  1356         -    expr {11**17 == 11**268435473}
         1356  +    expr {11**268435456}
  1357   1357   } -returnCodes error -result {exponent too large}
  1358   1358   test expr-23.71.4 {INST_EXPON: Bug 2798543} {
  1359   1359       expr {(-11)**17 == (-11)**65553}
  1360   1360   } 0
  1361   1361   test expr-23.72.0 {INST_EXPON: Bug 2798543} {
  1362   1362       expr {12**17 == 12**65553}
  1363   1363   } 0
  1364   1364   test expr-23.72.1 {INST_EXPON: Bug 2798543} {
  1365   1365       expr {12**17 == 12**131089}
  1366   1366   } 0
  1367   1367   test expr-23.72.2 {INST_EXPON: Bug 2798543} -body {
  1368         -    expr {12**17 == 12**268435473}
         1368  +    expr {12**268435456}
  1369   1369   } -returnCodes error -result {exponent too large}
  1370   1370   test expr-23.72.3 {INST_EXPON: Bug 2798543} {
  1371   1371       expr {(-12)**17 == (-12)**65553}
  1372   1372   } 0
  1373   1373   test expr-23.73.0 {INST_EXPON: Bug 2798543} {
  1374   1374       expr {13**17 == 13**65553}
  1375   1375   } 0
  1376   1376   test expr-23.73.1 {INST_EXPON: Bug 2798543} {
  1377   1377       expr {13**17 == 13**131089}
  1378   1378   } 0
  1379   1379   test expr-23.73.2 {INST_EXPON: Bug 2798543} -body {
  1380         -    expr {13**17 == 13**268435473}
         1380  +    expr {13**268435456}
  1381   1381   } -returnCodes error -result {exponent too large}
  1382   1382   test expr-23.73.3 {INST_EXPON: Bug 2798543} {
  1383   1383       expr {(-13)**17 == (-13)**65553}
  1384   1384   } 0
  1385   1385   test expr-23.74.0 {INST_EXPON: Bug 2798543} {
  1386   1386       expr {14**17 == 14**65553}
  1387   1387   } 0
  1388   1388   test expr-23.74.1 {INST_EXPON: Bug 2798543} {
  1389   1389       expr {14**17 == 14**131089}
  1390   1390   } 0
  1391   1391   test expr-23.74.2 {INST_EXPON: Bug 2798543} -body {
  1392         -    expr {14**17 == 14**268435473}
         1392  +    expr {14**268435456}
  1393   1393   } -returnCodes error -result {exponent too large}
  1394   1394   test expr-23.74.3 {INST_EXPON: Bug 2798543} {
  1395   1395       expr {(-14)**17 == (-14)**65553}
  1396   1396   } 0
  1397   1397   
  1398   1398   
  1399   1399   # Some compilers get this wrong; ensure that we work around it correctly

Changes to tests/obj.test.

   472    472   test obj-26.1 {UpdateStringOfInt} testobj {
   473    473       set result ""
   474    474       lappend result [testintobj set 1 512]
   475    475       lappend result [testintobj mult10 1]
   476    476       lappend result [testintobj get 1]       ;# must update string rep
   477    477   } {512 5120 5120}
   478    478   
   479         -test obj-27.1 {Tcl_NewLongObj} testobj {
          479  +test obj-27.1 {Tcl_NewWideObj} testobj {
   480    480       set result ""
   481    481       lappend result [testobj freeallvars]
   482         -    testintobj setmaxlong 1
   483         -    lappend result [testintobj ismaxlong 1]
          482  +    testintobj setmax 1
          483  +    lappend result [testintobj ismax 1]
   484    484       lappend result [testobj type 1]
   485    485       lappend result [testobj refcount 1]
   486    486   } {{} 1 int 1}
   487    487   
   488    488   test obj-28.1 {Tcl_SetLongObj, existing "empty string" object} testobj {
   489    489       set result ""
   490    490       lappend result [testobj freeallvars]
   491    491       lappend result [testobj newobj 1]
   492         -    lappend result [testintobj setlong 1 77]  ;# makes existing obj long int
          492  +    lappend result [testintobj setint 1 77]  ;# makes existing obj int
   493    493       lappend result [testobj type 1]
   494    494       lappend result [testobj refcount 1]
   495    495   } {{} {} 77 int 2}
   496    496   test obj-28.2 {Tcl_SetLongObj, existing non-"empty string" object} testobj {
   497    497       set result ""
   498    498       lappend result [testobj freeallvars]
   499    499       lappend result [testdoubleobj set 1 12.34]
   500         -    lappend result [testintobj setlong 1 77]  ;# makes existing obj long int
          500  +    lappend result [testintobj setint 1 77]  ;# makes existing obj int
   501    501       lappend result [testobj type 1]
   502    502       lappend result [testobj refcount 1]
   503    503   } {{} 12.34 77 int 2}
   504    504   
   505         -test obj-29.1 {Tcl_GetLongFromObj, existing long integer object} testobj {
          505  +test obj-29.1 {Tcl_GetWideIntFromObj, existing int object} testobj {
   506    506       set result ""
   507         -    lappend result [testintobj setlong 1 22]
   508         -    lappend result [testintobj mult10 1]   ;# gets existing long int rep
          507  +    lappend result [testintobj setint 1 22]
          508  +    lappend result [testintobj mult10 1]   ;# gets existingint rep
   509    509   } {22 220}
   510         -test obj-29.2 {Tcl_GetLongFromObj, convert to long} testobj {
          510  +test obj-29.2 {Tcl_GetWideIntFromObj, convert to int} testobj {
   511    511       set result ""
   512         -    lappend result [testintobj setlong 1 477]
          512  +    lappend result [testintobj setint 1 477]
   513    513       lappend result [testintobj div10 1]    ;# must convert to bool
   514    514       lappend result [testobj type 1]
   515    515   } {477 47 int}
   516         -test obj-29.3 {Tcl_GetLongFromObj, error converting to long integer} testobj {
          516  +test obj-29.3 {Tcl_GetWideIntFromObj, error converting to int} testobj {
   517    517       set result ""
   518    518       lappend result [teststringobj set 1 abc]
   519         -    lappend result [catch {testintobj ismaxlong 1} msg] ;# cvts to long int
          519  +    lappend result [catch {testintobj ismax 1} msg] ;# cvts to long int
   520    520       lappend result $msg
   521    521   } {abc 1 {expected integer but got "abc"}}
   522         -test obj-29.4 {Tcl_GetLongFromObj, error converting from "empty string"} testobj {
          522  +test obj-29.4 {Tcl_GetWideIntFromObj, error converting from "empty string"} testobj {
   523    523       set result ""
   524    524       lappend result [testobj newobj 1]
   525         -    lappend result [catch {testintobj ismaxlong 1} msg] ;# cvts to long int
          525  +    lappend result [catch {testintobj ismax 1} msg] ;# cvts to long int
   526    526       lappend result $msg
   527    527   } {{} 1 {expected integer but got ""}}
   528    528   
   529    529   test obj-30.1 {Ref counting and object deletion, simple types} testobj {
   530    530       set result ""
   531    531       lappend result [testobj freeallvars]
   532    532       lappend result [testintobj set 1 1024]

Changes to tests/utf.test.

   104    104   test utf-4.1 {Tcl_NumUtfChars: zero length} testnumutfchars {
   105    105       testnumutfchars ""
   106    106   } {0}
   107    107   test utf-4.2 {Tcl_NumUtfChars: length 1} {testnumutfchars testbytestring} {
   108    108       testnumutfchars [testbytestring "\xC2\xA2"]
   109    109   } {1}
   110    110   test utf-4.3 {Tcl_NumUtfChars: long string} {testnumutfchars testbytestring} {
   111         -    testnumutfchars [testbytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"]
          111  +    testnumutfchars [testbytestring "abc\xC2\xA2\xE4\xB9\x8E\uA2\x4E"]
   112    112   } {7}
   113    113   test utf-4.4 {Tcl_NumUtfChars: #u0000} {testnumutfchars testbytestring} {
   114    114       testnumutfchars [testbytestring "\xC0\x80"]
   115    115   } {1}
   116    116   test utf-4.5 {Tcl_NumUtfChars: zero length, calc len} testnumutfchars {
   117    117       testnumutfchars "" 0
   118    118   } {0}
   119    119   test utf-4.6 {Tcl_NumUtfChars: length 1, calc len} {testnumutfchars testbytestring} {
   120    120       testnumutfchars [testbytestring "\xC2\xA2"] 2
   121    121   } {1}
   122    122   test utf-4.7 {Tcl_NumUtfChars: long string, calc len} {testnumutfchars testbytestring} {
   123         -    testnumutfchars [testbytestring "abc\xC2\xA2\xe4\xb9\x8e\uA2\u4e4e"] 10
          123  +    testnumutfchars [testbytestring "abc\xC2\xA2\xE4\xB9\x8E\uA2\x4E"] 10
   124    124   } {7}
   125    125   test utf-4.8 {Tcl_NumUtfChars: #u0000, calc len} {testnumutfchars testbytestring} {
   126    126       testnumutfchars [testbytestring "\xC0\x80"] 2
   127    127   } {1}
   128    128   # Bug [2738427]: Tcl_NumUtfChars(...) no overflow check
   129    129   test utf-4.9 {Tcl_NumUtfChars: #u20AC, calc len, incomplete} {testnumutfchars testbytestring} {
   130    130       testnumutfchars [testbytestring "\xE2\x82\xAC"] 2
................................................................................
   184    184       expr {"\u4e21" eq [testbytestring "\xe4\xb8\xa1"]}
   185    185   } 1
   186    186   test utf-10.4 {Tcl_UtfBackslash: stops at first non-hex} testbytestring {
   187    187       expr {"\u4e2k" eq "[testbytestring \xd3\xa2]k"}
   188    188   } 1
   189    189   test utf-10.5 {Tcl_UtfBackslash: stops after 4 hex chars} testbytestring {
   190    190       expr {"\u4e216" eq "[testbytestring \xe4\xb8\xa1]6"}
          191  +} 1
          192  +test utf-10.6 {Tcl_UtfBackslash: stops after 5 hex chars} testbytestring {
          193  +    expr {"\U1e2165" eq "[testbytestring \xf0\x9e\x88\x96]5"}
          194  +} 1
          195  +test utf-10.6 {Tcl_UtfBackslash: stops after 6 hex chars} testbytestring {
          196  +    expr {"\U10e2165" eq "[testbytestring \xf4\x8e\x88\x96]5"}
   191    197   } 1
   192    198   proc bsCheck {char num} {
   193    199       global errNum
   194    200       test utf-10.$errNum {backslash substitution} {
   195    201   	scan $char %c value
   196    202   	set value
   197    203       } $num

Changes to tests/util.test.

   278    278       # pattern += Tcl_UtfToUniChar(pattern, &endChar);
   279    279       # get 1 UTF-8 character
   280    280       Wrapper_Tcl_StringMatch "a\[a\u4e4fc]c" "a\u4e4fc"
   281    281   } 1
   282    282   test util-5.18 {Tcl_StringMatch: UTF-8} testbytestring {
   283    283       # pattern += Tcl_UtfToUniChar(pattern, &endChar);
   284    284       # proper advance: wrong answer would match on UTF trail byte of \u4e4f
   285         -    Wrapper_Tcl_StringMatch {a[a\u4e4fc]c} [testbytestring a\u008fc]
          285  +    Wrapper_Tcl_StringMatch {a[a\u4e4fc]c} [testbytestring a\x8fc]
   286    286   } 0
   287    287   test util-5.19 {Tcl_StringMatch: UTF-8} {
   288    288       # pattern += Tcl_UtfToUniChar(pattern, &endChar);
   289    289       # proper advance.
   290    290       Wrapper_Tcl_StringMatch {a[a\u4e4fc]c} "acc"
   291    291   } 1
   292    292   test util-5.20 {Tcl_StringMatch} {
................................................................................
  4126   4126   } {65536 65536}
  4127   4127   
  4128   4128   test util-18.12 {Tcl_ObjPrintf} {testprint} {
  4129   4129       testprint "%I64d %Id" 65537
  4130   4130   } {65537 65537}
  4131   4131   
  4132   4132   if {[catch {set ::tcl_precision $saved_precision}]} {
  4133         -    unset ::tcl_precision 
         4133  +    unset ::tcl_precision
  4134   4134   }
  4135   4135   
  4136   4136   # cleanup
  4137   4137   ::tcltest::cleanupTests
  4138   4138   return
  4139   4139   
  4140   4140   # Local Variables:
  4141   4141   # mode: tcl
  4142   4142   # End:

Changes to tools/tcltk-man2html.tcl.

    27     27   
    28     28   ##
    29     29   ## Source the utility functions that provide most of the
    30     30   ## implementation of the transformation from nroff to html.
    31     31   ##
    32     32   source [file join [file dirname [info script]] tcltk-man2html-utils.tcl]
    33     33   
           34  +proc findversion {top name useversion} {
           35  +    set upper [string toupper $name]
           36  +    foreach top1 [list $top $top/..] sub {{} generic} {
           37  +	foreach dirname [
           38  +	    glob -nocomplain -tails -type d -directory $top1 *] {
           39  +
           40  +	    set tclh [join [list $top1 $dirname {*}$sub $name.h] /]
           41  +	    if {[file exists $tclh]} {
           42  +		set chan [open $tclh]
           43  +		set data [read $chan]
           44  +		close $chan
           45  +		# backslash isn't required in front of quote, but it keeps syntax
           46  +		# highlighting straight in some editors
           47  +		if {[regexp -lineanchor \
           48  +		    [string map [list @[email protected] $upper] \
           49  +			{^#define\[email protected]@_VERSION\s+\"([^.])+\.([^.\"]+)}] \
           50  +		    $data -> major minor]} {
           51  +			# to do
           52  +			#     use glob matching instead of string matching or add
           53  +			#     brace handling to [string matcch]
           54  +			if {$useversion eq {} || [string match $useversion $major.$minor]} {
           55  +			    set top [file dirname [file dirname $tclh]]
           56  +			    set prefix [file dirname $top]
           57  +			    return [list $prefix [file tail $top] $major $minor]
           58  +			}
           59  +		}
           60  +	    }
           61  +	}
           62  +    }
           63  +    return
           64  +}
           65  +
    34     66   proc parse_command_line {} {
    35     67       global argv Version
    36     68   
    37     69       # These variables determine where the man pages come from and where
    38     70       # the converted pages go to.
    39     71       global tcltkdir tkdir tcldir webdir build_tcl build_tk verbose
    40     72   
    41     73       # Set defaults based on original code.
    42     74       set tcltkdir ../..
    43     75       set tkdir {}
    44     76       set tcldir {}
    45     77       set webdir ../html
    46     78       set build_tcl 0
           79  +    set opt_build_tcl 0
    47     80       set build_tk 0
           81  +    set opt_build_tk 0
    48     82       set verbose 0
    49     83       # Default search version is a glob pattern
    50     84       set useversion {{,[8-9].[0-9]{,[.ab][0-9]{,[0-9]}}}}
    51     85   
    52     86       # Handle arguments a la GNU:
    53     87       #   --version
    54     88       #   --useversion=<version>
................................................................................
    89    123   	    --useversion=* {
    90    124   		# length of "--useversion=" is 13
    91    125   		set useversion [string range $option 13 end]
    92    126   	    }
    93    127   
    94    128   	    --tcl {
    95    129   		set build_tcl 1
          130  +		set opt_build_tcl 1
    96    131   	    }
    97    132   
    98    133   	    --tk {
    99    134   		set build_tk 1
          135  +		set opt_build_tk 1
   100    136   	    }
   101    137   
   102    138   	    --verbose=* {
   103    139   		set verbose [string range $option \
   104    140   				 [string length --verbose=] end]
   105    141   	    }
   106    142   	    default {
................................................................................
   113    149       if {!$build_tcl && !$build_tk} {
   114    150   	set build_tcl 1;
   115    151   	set build_tk 1
   116    152       }
   117    153   
   118    154       if {$build_tcl} {
   119    155   	# Find Tcl.
   120         -	set tcldir [lindex [lsort [glob -nocomplain -tails -type d \
   121         -		-directory $tcltkdir tcl$useversion]] end]
   122         -	if {$tcldir eq ""} {
          156  +	lassign [findversion $tcltkdir tcl $useversion] tcltkdir tcldir major minor
          157  +	if {$tcldir eq {} && $opt_build_tcl} {
   123    158   	    puts stderr "tcltk-man-html: couldn't find Tcl below $tcltkdir"
   124    159   	    exit 1
   125    160   	}
   126         -	puts "using Tcl source directory $tcldir"
          161  +	puts "using Tcl source directory $tcltkdir $tcldir"
   127    162       }
          163  +
   128    164   
   129    165       if {$build_tk} {
   130    166   	# Find Tk.
   131         -	set tkdir [lindex [lsort [glob -nocomplain -tails -type d \
   132         -		-directory $tcltkdir tk$useversion]] end]
   133         -	if {$tkdir eq ""} {
          167  +	lassign [findversion $tcltkdir tk $useversion] tcltkdir tkdir major minor
          168  +	if {$tkdir eq {} && $opt_build_tk} {
   134    169   	    puts stderr "tcltk-man-html: couldn't find Tk below $tcltkdir"
   135    170   	    exit 1
   136    171   	}
   137    172   	puts "using Tk source directory $tkdir"
   138    173       }
   139    174   
   140    175       puts "verbose messages are [expr {$verbose ? {on} : {off}}]"
   141    176   
   142    177       # the title for the man pages overall
   143    178       global overall_title
   144    179       set overall_title ""
   145    180       if {$build_tcl} {
   146         -	append overall_title "[capitalize $tcldir]"
          181  +	append overall_title "Tcl $major.$minor"
   147    182       }
   148    183       if {$build_tcl && $build_tk} {
   149    184   	append overall_title "/"
   150    185       }
   151    186       if {$build_tk} {
   152    187   	append overall_title "[capitalize $tkdir]"
   153    188       }

Changes to unix/Makefile.in.

   315    315   	tclThreadAlloc.o tclThreadJoin.o tclThreadStorage.o tclStubInit.o \
   316    316   	tclTimer.o tclTrace.o tclUtf.o tclUtil.o tclVar.o tclZlib.o \
   317    317   	tclTomMathInterface.o tclZipfs.o
   318    318   
   319    319   OO_OBJS = tclOO.o tclOOBasic.o tclOOCall.o tclOODefineCmds.o tclOOInfo.o \
   320    320   	tclOOMethod.o tclOOStubInit.o
   321    321   
   322         -TOMMATH_OBJS = bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o \
          322  +TOMMATH_OBJS = bn_reverse.o bn_fast_s_mp_mul_digs.o \
   323    323   	bn_fast_s_mp_sqr.o bn_mp_add.o bn_mp_and.o \
   324    324   	bn_mp_add_d.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o \
   325    325   	bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
   326    326   	bn_mp_cnt_lsb.o bn_mp_copy.o \
   327    327   	bn_mp_count_bits.o bn_mp_div.o bn_mp_div_d.o bn_mp_div_2.o \
   328    328   	bn_mp_div_2d.o bn_mp_div_3.o bn_mp_exch.o \
   329    329   	bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_get_bit.o bn_mp_get_int.o \
................................................................................
   486    486   
   487    487   STUB_SRCS = \
   488    488   	$(GENERIC_DIR)/tclStubLib.c \
   489    489   	$(GENERIC_DIR)/tclTomMathStubLib.c \
   490    490   	$(GENERIC_DIR)/tclOOStubLib.c
   491    491   
   492    492   TOMMATH_SRCS = \
   493         -	$(TOMMATH_DIR)/bncore.c \
   494    493   	$(TOMMATH_DIR)/bn_reverse.c \
   495    494   	$(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c \
   496    495   	$(TOMMATH_DIR)/bn_fast_s_mp_sqr.c \
   497    496   	$(TOMMATH_DIR)/bn_mp_add.c \
   498    497   	$(TOMMATH_DIR)/bn_mp_add_d.c \
   499    498   	$(TOMMATH_DIR)/bn_mp_and.c \
   500    499   	$(TOMMATH_DIR)/bn_mp_clamp.c \
................................................................................
  1456   1455   
  1457   1456   tclThreadTest.o: $(GENERIC_DIR)/tclThreadTest.c
  1458   1457   	$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclThreadTest.c
  1459   1458   
  1460   1459   tclTomMathInterface.o: $(GENERIC_DIR)/tclTomMathInterface.c $(MATHHDRS)
  1461   1460   	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTomMathInterface.c
  1462   1461   
  1463         -bncore.o: $(TOMMATH_DIR)/bncore.c $(MATHHDRS)
  1464         -	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bncore.c
  1465         -
  1466   1462   bn_reverse.o: $(TOMMATH_DIR)/bn_reverse.c $(MATHHDRS)
  1467   1463   	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_reverse.c
  1468   1464   
  1469   1465   bn_fast_s_mp_mul_digs.o: $(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c $(MATHHDRS)
  1470   1466   	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c
  1471   1467   
  1472   1468   bn_fast_s_mp_sqr.o: $(TOMMATH_DIR)/bn_fast_s_mp_sqr.c $(MATHHDRS)
................................................................................
  2291   2287   	$(BUILD_HTML) --tcl
  2292   2288   	@[email protected]
  2293   2289   
  2294   2290   html-tk: ${NATIVE_TCLSH}
  2295   2291   	$(BUILD_HTML) --tk
  2296   2292   	@[email protected]
  2297   2293   
  2298         -# You'd better have these programs or you will have problems creating Makefile
  2299         -# from Makefile.in in the first place...
  2300         -HTML_VERSION = `basename $(TOP_DIR) | sed s/tcl//`
  2301   2294   BUILD_HTML = \
  2302   2295   	@${NATIVE_TCLSH} $(TOOL_DIR)/tcltk-man2html.tcl \
  2303         -		--useversion=$(HTML_VERSION) --htmldir="$(HTML_INSTALL_DIR)" \
  2304         -		--srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS)
         2296  +		--tcl --useversion=$(MAJOR_VERSION).$(MINOR_VERSION) --htmldir="$(HTML_INSTALL_DIR)" \
         2297  +		--srcdir=$(TOP_DIR) $(BUILD_HTML_FLAGS)
  2305   2298   
  2306   2299   #--------------------------------------------------------------------------
  2307   2300   # The list of all the targets that do not correspond to real files. This stops
  2308   2301   # 'make' from getting confused when someone makes an error in a rule.
  2309   2302   #--------------------------------------------------------------------------
  2310   2303   
  2311   2304   .PHONY: all binaries libraries objs doc html html-tcl html-tk test runtest

Changes to unix/tclUnixFCmd.c.

  1495   1495   static int
  1496   1496   SetGroupAttribute(
  1497   1497       Tcl_Interp *interp,		/* The interp for error reporting. */
  1498   1498       int objIndex,		/* The index of the attribute. */
  1499   1499       Tcl_Obj *fileName,		/* The name of the file (UTF-8). */
  1500   1500       Tcl_Obj *attributePtr)	/* New group for file. */
  1501   1501   {
  1502         -    long gid;
         1502  +    Tcl_WideInt gid;
  1503   1503       int result;
  1504   1504       const char *native;
  1505   1505   
  1506         -    if (Tcl_GetLongFromObj(NULL, attributePtr, &gid) != TCL_OK) {
         1506  +    if (Tcl_GetWideIntFromObj(NULL, attributePtr, &gid) != TCL_OK) {
  1507   1507   	Tcl_DString ds;
  1508   1508   	struct group *groupPtr = NULL;
  1509   1509   	const char *string;
  1510   1510   
  1511   1511   	string = TclGetString(attributePtr);
  1512   1512   
  1513   1513   	native = Tcl_UtfToExternalDString(NULL, string, attributePtr->length, &ds);
................................................................................
  1561   1561   static int
  1562   1562   SetOwnerAttribute(
  1563   1563       Tcl_Interp *interp,		/* The interp for error reporting. */
  1564   1564       int objIndex,		/* The index of the attribute. */
  1565   1565       Tcl_Obj *fileName,		/* The name of the file (UTF-8). */
  1566   1566       Tcl_Obj *attributePtr)	/* New owner for file. */
  1567   1567   {
  1568         -    long uid;
         1568  +    Tcl_WideInt uid;
  1569   1569       int result;
  1570   1570       const char *native;
  1571   1571   
  1572         -    if (Tcl_GetLongFromObj(NULL, attributePtr, &uid) != TCL_OK) {
         1572  +    if (Tcl_GetWideIntFromObj(NULL, attributePtr, &uid) != TCL_OK) {
  1573   1573   	Tcl_DString ds;
  1574   1574   	struct passwd *pwPtr = NULL;
  1575   1575   	const char *string;
  1576   1576   
  1577   1577   	string = TclGetString(attributePtr);
  1578   1578   
  1579   1579   	native = Tcl_UtfToExternalDString(NULL, string, attributePtr->length, &ds);
................................................................................
  1627   1627   static int
  1628   1628   SetPermissionsAttribute(
  1629   1629       Tcl_Interp *interp,		/* The interp we are using for errors. */
  1630   1630       int objIndex,		/* The index of the attribute. */
  1631   1631       Tcl_Obj *fileName,		/* The name of the file (UTF-8). */
  1632   1632       Tcl_Obj *attributePtr)	/* The attribute to set. */
  1633   1633   {
  1634         -    long mode;
         1634  +    Tcl_WideInt mode;
  1635   1635       mode_t newMode;
  1636   1636       int result = TCL_ERROR;
  1637   1637       const char *native;
  1638   1638       const char *modeStringPtr = TclGetString(attributePtr);
  1639   1639       int scanned = TclParseAllWhiteSpace(modeStringPtr, -1);
  1640   1640   
  1641   1641       /*
................................................................................
  1646   1646   	    && (modeStringPtr[scanned+1] >= '0')
  1647   1647   	    && (modeStringPtr[scanned+1] <= '7')) {
  1648   1648   	/* Leading zero - attempt octal interpretation */
  1649   1649   	Tcl_Obj *modeObj;
  1650   1650   
  1651   1651   	TclNewLiteralStringObj(modeObj, "0o");
  1652   1652   	Tcl_AppendToObj(modeObj, modeStringPtr+scanned+1, -1);
  1653         -	result = Tcl_GetLongFromObj(NULL, modeObj, &mode);
         1653  +	result = Tcl_GetWideIntFromObj(NULL, modeObj, &mode);
  1654   1654   	Tcl_DecrRefCount(modeObj);
  1655   1655       }
  1656   1656       if (result == TCL_OK
  1657         -	    || Tcl_GetLongFromObj(NULL, attributePtr, &mode) == TCL_OK) {
         1657  +	    || Tcl_GetWideIntFromObj(NULL, attributePtr, &mode) == TCL_OK) {
  1658   1658   	newMode = (mode_t) (mode & 0x00007FFF);
  1659   1659       } else {
  1660   1660   	Tcl_StatBuf buf;
  1661   1661   
  1662   1662   	/*
  1663   1663   	 * Try the forms "rwxrwxrwx" and "ugo=rwx"
  1664   1664   	 *
................................................................................
  2336   2336       ckfree(winPath);
  2337   2337   
  2338   2338       if (fileAttributes == -1) {
  2339   2339   	StatError(interp, fileName);
  2340   2340   	return TCL_ERROR;
  2341   2341       }
  2342   2342   
  2343         -    *attributePtrPtr = Tcl_NewBooleanObj(
  2344         -	    fileAttributes & attributeArray[objIndex]);
         2343  +    *attributePtrPtr = Tcl_NewWideIntObj(
         2344  +	    (fileAttributes & attributeArray[objIndex]) != 0);
  2345   2345       return TCL_OK;
  2346   2346   }
  2347   2347   
  2348   2348   /*
  2349   2349    *---------------------------------------------------------------------------
  2350   2350    *
  2351   2351    * SetUnixFileAttributes
................................................................................
  2436   2436   	    Tcl_SetObjResult(interp, Tcl_ObjPrintf(
  2437   2437   		    "could not read \"%s\": %s",
  2438   2438   		    TclGetString(fileName), Tcl_PosixError(interp)));
  2439   2439   	}
  2440   2440   	return TCL_ERROR;
  2441   2441       }
  2442   2442   
  2443         -    *attributePtrPtr = Tcl_NewBooleanObj(statBuf.st_flags & UF_IMMUTABLE);
         2443  +    *attributePtrPtr = Tcl_NewWideIntObj((statBuf.st_flags & UF_IMMUTABLE) != 0);
  2444   2444       return TCL_OK;
  2445   2445   }
  2446   2446   
  2447   2447   /*
  2448   2448    *---------------------------------------------------------------------------
  2449   2449    *
  2450   2450    * SetUnixFileAttributes

Changes to win/Makefile.in.

   356    356   	tclUtf.$(OBJEXT) \
   357    357   	tclUtil.$(OBJEXT) \
   358    358   	tclVar.$(OBJEXT) \
   359    359   	tclZipfs.$(OBJEXT) \
   360    360   	tclZlib.$(OBJEXT)
   361    361   
   362    362   TOMMATH_OBJS = \
   363         -	bncore.${OBJEXT} \
   364    363   	bn_reverse.${OBJEXT} \
   365    364   	bn_fast_s_mp_mul_digs.${OBJEXT} \
   366    365   	bn_fast_s_mp_sqr.${OBJEXT} \
   367    366   	bn_mp_add.${OBJEXT} \
   368    367   	bn_mp_add_d.${OBJEXT} \
   369    368   	bn_mp_and.${OBJEXT} \
   370    369   	bn_mp_clamp.${OBJEXT} \

Changes to win/makefile.vc.

   248    248   	$(TMP_DIR)\inflate.obj \
   249    249   	$(TMP_DIR)\inftrees.obj \
   250    250   	$(TMP_DIR)\trees.obj \
   251    251   	$(TMP_DIR)\uncompr.obj \
   252    252   	$(TMP_DIR)\zutil.obj
   253    253   
   254    254   TOMMATHOBJS = \
   255         -	$(TMP_DIR)\bncore.obj \
   256    255   	$(TMP_DIR)\bn_reverse.obj \
   257    256   	$(TMP_DIR)\bn_fast_s_mp_mul_digs.obj \
   258    257   	$(TMP_DIR)\bn_fast_s_mp_sqr.obj \
   259    258   	$(TMP_DIR)\bn_mp_add.obj \
   260    259   	$(TMP_DIR)\bn_mp_add_d.obj \
   261    260   	$(TMP_DIR)\bn_mp_and.obj \
   262    261   	$(TMP_DIR)\bn_mp_clamp.obj \

Changes to win/tclWinFCmd.c.

  1545   1545   		 */
  1546   1546   
  1547   1547   		attr = 0;
  1548   1548   	    }
  1549   1549   	}
  1550   1550       }
  1551   1551   
  1552         -    *attributePtrPtr = Tcl_NewBooleanObj(attr);
         1552  +    *attributePtrPtr = Tcl_NewWideIntObj(attr != 0);
  1553   1553       return TCL_OK;
  1554   1554   }
  1555   1555   
  1556   1556   /*
  1557   1557    *----------------------------------------------------------------------
  1558   1558    *
  1559   1559    * ConvertFileNameFormat --