Accepting request 753909 from devel:languages:tcl
- New version: 8.6.10: * (bug)[7a9dc5] [file normalize ~/~foo] segfault * (bug)[3cf3a9] variable 'timezone' deprecated in vc2017 * (bug)[cc1e91] [list [list {*}[set a " "]]] regression obsoletes tcl-expand-regression.patch. * (bug)[e3f481] tests var-1.2[01] * (new) Update to Unicode 12.0 * (new)[TIP 527] New command [timerate] * (bug)[39fed4] [package require] memory validity * (new) New command tcl::unsupported::corotype * (bug) memlink when namespace deletion kills linked var * (new) README file converted to README.md in Markdown * (bug)[8b9854] [info level 0] regression with ensembles * (bug)[6bdadf] crash multi-arg write-traced [lappend] * (bug)[f8a33c] crash Tcl_Exit before init * (bug)[fa6bf3] Bytecode fails epoch recovery at numLevel=0 * (bug)[fec0c1] C stack overflow compiling bytecode * tzdata updated to Olson's tzdata2019c * (bug)[16768d] Fix [info hostname] on NetBSD * (new) libtommath updated to release 1.2.0 * (bug)[bcd100] bad fs cache when system encoding changes * (bug)[135804] segfault in [next] after destroy * (bug)[13657a] application/json us text, not binary OBS-URL: https://build.opensuse.org/request/show/753909 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/tcl?expand=0&rev=57
This commit is contained in:
commit
d07a6af436
@ -1,219 +0,0 @@
|
|||||||
Index: generic/tclExecute.c
|
|
||||||
==================================================================
|
|
||||||
--- generic/tclExecute.c
|
|
||||||
+++ generic/tclExecute.c
|
|
||||||
@@ -5235,12 +5235,16 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Every range of an empty list is an empty list */
|
|
||||||
if (objc == 0) {
|
|
||||||
- TRACE_APPEND(("\n"));
|
|
||||||
- NEXT_INST_F(9, 0, 0);
|
|
||||||
+ /* avoid return of not canonical list (e. g. spaces in string repr.) */
|
|
||||||
+ if (!valuePtr->bytes || !valuePtr->bytes[0]) {
|
|
||||||
+ TRACE_APPEND(("\n"));
|
|
||||||
+ NEXT_INST_F(9, 0, 0);
|
|
||||||
+ }
|
|
||||||
+ goto emptyList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Decode index value operands. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Index: generic/tclTest.c
|
|
||||||
==================================================================
|
|
||||||
--- generic/tclTest.c
|
|
||||||
+++ generic/tclTest.c
|
|
||||||
@@ -218,10 +218,13 @@
|
|
||||||
static void PrintParse(Tcl_Interp *interp, Tcl_Parse *parsePtr);
|
|
||||||
static void SpecialFree(char *blockPtr);
|
|
||||||
static int StaticInitProc(Tcl_Interp *interp);
|
|
||||||
static int TestasyncCmd(ClientData dummy,
|
|
||||||
Tcl_Interp *interp, int argc, const char **argv);
|
|
||||||
+static int TestpurebytesobjObjCmd(ClientData clientData,
|
|
||||||
+ Tcl_Interp *interp, int objc,
|
|
||||||
+ Tcl_Obj *const objv[]);
|
|
||||||
static int TestbytestringObjCmd(ClientData clientData,
|
|
||||||
Tcl_Interp *interp, int objc,
|
|
||||||
Tcl_Obj *const objv[]);
|
|
||||||
static int TestcmdinfoCmd(ClientData dummy,
|
|
||||||
Tcl_Interp *interp, int argc, const char **argv);
|
|
||||||
@@ -568,10 +571,11 @@
|
|
||||||
*/
|
|
||||||
|
|
||||||
Tcl_CreateObjCommand(interp, "gettimes", GetTimesObjCmd, NULL, NULL);
|
|
||||||
Tcl_CreateCommand(interp, "noop", NoopCmd, NULL, NULL);
|
|
||||||
Tcl_CreateObjCommand(interp, "noop", NoopObjCmd, NULL, NULL);
|
|
||||||
+ Tcl_CreateObjCommand(interp, "testpurebytesobj", TestpurebytesobjObjCmd, NULL, NULL);
|
|
||||||
Tcl_CreateObjCommand(interp, "testbytestring", TestbytestringObjCmd, NULL, NULL);
|
|
||||||
Tcl_CreateObjCommand(interp, "testwrongnumargs", TestWrongNumArgsObjCmd,
|
|
||||||
NULL, NULL);
|
|
||||||
Tcl_CreateObjCommand(interp, "testfilesystem", TestFilesystemObjCmd,
|
|
||||||
NULL, NULL);
|
|
||||||
@@ -2079,11 +2083,11 @@
|
|
||||||
int length, flags;
|
|
||||||
const char *script;
|
|
||||||
|
|
||||||
flags = 0;
|
|
||||||
if (objc == 3) {
|
|
||||||
- const char *global = Tcl_GetStringFromObj(objv[2], &length);
|
|
||||||
+ const char *global = Tcl_GetString(objv[2]);
|
|
||||||
if (strcmp(global, "global") != 0) {
|
|
||||||
Tcl_AppendResult(interp, "bad value \"", global,
|
|
||||||
"\": must be global", NULL);
|
|
||||||
return TCL_ERROR;
|
|
||||||
}
|
|
||||||
@@ -4953,10 +4957,61 @@
|
|
||||||
int objc, /* Number of arguments. */
|
|
||||||
Tcl_Obj *const objv[]) /* The argument objects. */
|
|
||||||
{
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ *----------------------------------------------------------------------
|
|
||||||
+ *
|
|
||||||
+ * TestpurebytesobjObjCmd --
|
|
||||||
+ *
|
|
||||||
+ * This object-based procedure constructs a pure bytes object
|
|
||||||
+ * without type and with internal representation containing NULL's.
|
|
||||||
+ *
|
|
||||||
+ * If no argument supplied it returns empty object with tclEmptyStringRep,
|
|
||||||
+ * otherwise it returns this as pure bytes object with bytes value equal
|
|
||||||
+ * string.
|
|
||||||
+ *
|
|
||||||
+ * Results:
|
|
||||||
+ * Returns the TCL_OK result code.
|
|
||||||
+ *
|
|
||||||
+ * Side effects:
|
|
||||||
+ * None.
|
|
||||||
+ *
|
|
||||||
+ *----------------------------------------------------------------------
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+TestpurebytesobjObjCmd(
|
|
||||||
+ ClientData unused, /* Not used. */
|
|
||||||
+ Tcl_Interp *interp, /* Current interpreter. */
|
|
||||||
+ int objc, /* Number of arguments. */
|
|
||||||
+ Tcl_Obj *const objv[]) /* The argument objects. */
|
|
||||||
+{
|
|
||||||
+ Tcl_Obj *objPtr;
|
|
||||||
+
|
|
||||||
+ if (objc > 2) {
|
|
||||||
+ Tcl_WrongNumArgs(interp, 1, objv, "?string?");
|
|
||||||
+ return TCL_ERROR;
|
|
||||||
+ }
|
|
||||||
+ objPtr = Tcl_NewObj();
|
|
||||||
+ /*
|
|
||||||
+ objPtr->internalRep.twoPtrValue.ptr1 = NULL;
|
|
||||||
+ objPtr->internalRep.twoPtrValue.ptr2 = NULL;
|
|
||||||
+ */
|
|
||||||
+ memset(&objPtr->internalRep, 0, sizeof(objPtr->internalRep));
|
|
||||||
+ if (objc == 2) {
|
|
||||||
+ const char *s = Tcl_GetString(objv[1]);
|
|
||||||
+ objPtr->length = objv[1]->length;
|
|
||||||
+ objPtr->bytes = ckalloc(objPtr->length + 1);
|
|
||||||
+ memcpy(objPtr->bytes, s, objPtr->length);
|
|
||||||
+ objPtr->bytes[objPtr->length] = 0;
|
|
||||||
+ }
|
|
||||||
+ Tcl_SetObjResult(interp, objPtr);
|
|
||||||
+ return TCL_OK;
|
|
||||||
+}
|
|
||||||
|
|
||||||
/*
|
|
||||||
*----------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* TestbytestringObjCmd --
|
|
||||||
|
|
||||||
Index: tests/basic.test
|
|
||||||
==================================================================
|
|
||||||
--- tests/basic.test
|
|
||||||
+++ tests/basic.test
|
|
||||||
@@ -959,10 +959,16 @@
|
|
||||||
lappend res [catch { run { {*}{error Hejsan} } } err]
|
|
||||||
lappend res $err
|
|
||||||
} -cleanup {
|
|
||||||
unset res t
|
|
||||||
} -result {0 10 1 Hejsan}
|
|
||||||
+
|
|
||||||
+test basic-48.24.$noComp {expansion: empty not canonical list, regression test, bug [cc1e91552c]} -constraints $constraints -setup {
|
|
||||||
+ unset -nocomplain a
|
|
||||||
+} -body {
|
|
||||||
+ run {list [list {*}{ }] [list {*}[format %c 32]] [list {*}[set a { }]]}
|
|
||||||
+} -result [lrepeat 3 {}] -cleanup {unset -nocomplain a}
|
|
||||||
|
|
||||||
} ;# End of noComp loop
|
|
||||||
|
|
||||||
test basic-49.1 {Tcl_EvalEx: verify TCL_EVAL_GLOBAL operation} testevalex {
|
|
||||||
set ::x global
|
|
||||||
|
|
||||||
Index: tests/lrange.test
|
|
||||||
==================================================================
|
|
||||||
--- tests/lrange.test
|
|
||||||
+++ tests/lrange.test
|
|
||||||
@@ -13,10 +13,16 @@
|
|
||||||
|
|
||||||
if {[lsearch [namespace children] ::tcltest] == -1} {
|
|
||||||
package require tcltest
|
|
||||||
namespace import -force ::tcltest::*
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+::tcltest::loadTestedCommands
|
|
||||||
+catch [list package require -exact Tcltest [info patchlevel]]
|
|
||||||
+
|
|
||||||
+testConstraint testpurebytesobj [llength [info commands testpurebytesobj]]
|
|
||||||
+
|
|
||||||
|
|
||||||
test lrange-1.1 {range of list elements} {
|
|
||||||
lrange {a b c d} 1 2
|
|
||||||
} {b c}
|
|
||||||
test lrange-1.2 {range of list elements} {
|
|
||||||
@@ -105,14 +111,44 @@
|
|
||||||
list [lrange {a b c} -1 1] [lrange {a b c} -1+0 end-1] [lrange {a b c} -2 1] [lrange {a b c} -2+0 0+1]
|
|
||||||
} [lrepeat 4 {a b}]
|
|
||||||
test lrange-3.6 {compiled with calculated indices, end out of range (after end)} {
|
|
||||||
list [lrange {a b c} 1 end+1] [lrange {a b c} 1+0 2+1] [lrange {a b c} 1 end+1] [lrange {a b c} end-1 3+1]
|
|
||||||
} [lrepeat 4 {b c}]
|
|
||||||
+
|
|
||||||
+test lrange-3.7a {compiled on empty not canonical list (with static and dynamic indices), regression test, bug [cc1e91552c]} {
|
|
||||||
+ list [lrange { } 0 1] [lrange [format %c 32] 0 1] [lrange [set a { }] 0 1] \
|
|
||||||
+ [lrange { } 0-1 end+1] [lrange [format %c 32] 0-1 end+1] [lrange $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
+test lrange-3.7b {not compiled on empty not canonical list (with static and dynamic indices), regression test, bug [cc1e91552c]} {
|
|
||||||
+ set cmd lrange
|
|
||||||
+ list [$cmd { } 0 1] [$cmd [format %c 32] 0 1] [$cmd [set a { }] 0 1] \
|
|
||||||
+ [$cmd { } 0-1 end+1] [$cmd [format %c 32] 0-1 end+1] [$cmd $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
+# following 4 tests could cause a segfault on empty non-lists with tclEmptyStringRep
|
|
||||||
+# (as before the fix [58c46e74b931d3a1]):
|
|
||||||
+test lrange-3.7a.2 {compiled on empty not list object, 2nd regression test, bug [cc1e91552c]} {
|
|
||||||
+ list [lrange {} 0 1] [lrange [lindex a -1] 0 1] [lrange [set a {}] 0 1] \
|
|
||||||
+ [lrange {} 0-1 end+1] [lrange [lindex a -1] 0-1 end+1] [lrange $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
+test lrange-3.7b.2 {not compiled on empty not list object, 2nd regression test, bug [cc1e91552c]} {
|
|
||||||
+ set cmd lrange
|
|
||||||
+ list [$cmd {} 0 1] [$cmd [lindex a -1] 0 1] [$cmd [set a {}] 0 1] \
|
|
||||||
+ [$cmd {} 0-1 end+1] [$cmd [lindex a -1] 0-1 end+1] [$cmd $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
+test lrange-3.7c.2 {compiled on empty pure bytes object, 2nd regression test, bug [cc1e91552c]} {
|
|
||||||
+ list [lrange [testpurebytesobj] 0 1] [lrange [testpurebytesobj { }] 0 1] [lrange [set a [testpurebytesobj {}]] 0 1] \
|
|
||||||
+ [lrange [testpurebytesobj] 0-1 end+1] [lrange [testpurebytesobj { }] 0-1 end+1] [lrange $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
+test lrange-3.7d.2 {not compiled on empty pure bytes object, 2nd regression test, bug [cc1e91552c]} {
|
|
||||||
+ set cmd lrange
|
|
||||||
+ list [$cmd [testpurebytesobj] 0 1] [$cmd [testpurebytesobj { }] 0 1] [$cmd [set a [testpurebytesobj {}]] 0 1] \
|
|
||||||
+ [$cmd [testpurebytesobj] 0-1 end+1] [$cmd [testpurebytesobj { }] 0-1 end+1] [$cmd $a 0-1 end+1]
|
|
||||||
+} [lrepeat 6 {}]
|
|
||||||
|
|
||||||
|
|
||||||
# cleanup
|
|
||||||
::tcltest::cleanupTests
|
|
||||||
return
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: tcl
|
|
||||||
# End:
|
|
||||||
|
|
27
tcl.changes
27
tcl.changes
@ -1,3 +1,30 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Dec 3 13:40:02 UTC 2019 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- New version: 8.6.10:
|
||||||
|
* (bug)[7a9dc5] [file normalize ~/~foo] segfault
|
||||||
|
* (bug)[3cf3a9] variable 'timezone' deprecated in vc2017
|
||||||
|
* (bug)[cc1e91] [list [list {*}[set a " "]]] regression
|
||||||
|
obsoletes tcl-expand-regression.patch.
|
||||||
|
* (bug)[e3f481] tests var-1.2[01]
|
||||||
|
* (new) Update to Unicode 12.0
|
||||||
|
* (new)[TIP 527] New command [timerate]
|
||||||
|
* (bug)[39fed4] [package require] memory validity
|
||||||
|
* (new) New command tcl::unsupported::corotype
|
||||||
|
* (bug) memlink when namespace deletion kills linked var
|
||||||
|
* (new) README file converted to README.md in Markdown
|
||||||
|
* (bug)[8b9854] [info level 0] regression with ensembles
|
||||||
|
* (bug)[6bdadf] crash multi-arg write-traced [lappend]
|
||||||
|
* (bug)[f8a33c] crash Tcl_Exit before init
|
||||||
|
* (bug)[fa6bf3] Bytecode fails epoch recovery at numLevel=0
|
||||||
|
* (bug)[fec0c1] C stack overflow compiling bytecode
|
||||||
|
* tzdata updated to Olson's tzdata2019c
|
||||||
|
* (bug)[16768d] Fix [info hostname] on NetBSD
|
||||||
|
* (new) libtommath updated to release 1.2.0
|
||||||
|
* (bug)[bcd100] bad fs cache when system encoding changes
|
||||||
|
* (bug)[135804] segfault in [next] after destroy
|
||||||
|
* (bug)[13657a] application/json us text, not binary
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jul 9 06:21:27 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
Tue Jul 9 06:21:27 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
12
tcl.spec
12
tcl.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package tcl
|
# spec file for package tcl
|
||||||
#
|
#
|
||||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2019 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: tcl
|
Name: tcl
|
||||||
Url: http://www.tcl.tk
|
URL: http://www.tcl.tk
|
||||||
Version: 8.6.9
|
Version: 8.6.10
|
||||||
Release: 0
|
Release: 0
|
||||||
%define rrc %{nil}
|
%define rrc %{nil}
|
||||||
%define TCL_MINOR %(echo %version | cut -c1-3)
|
%define TCL_MINOR %(echo %version | cut -c1-3)
|
||||||
%define itclver 4.1.2
|
%define itclver 4.2.0
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Summary: The Tcl Programming Language
|
Summary: The Tcl Programming Language
|
||||||
License: TCL
|
License: TCL
|
||||||
@ -41,7 +41,6 @@ Source0: ftp://ftp.tcl.tk/pub/tcl/tcl8_6/%{name}%{version}%{rrc}-src.tar.
|
|||||||
Source1: tcl-rpmlintrc
|
Source1: tcl-rpmlintrc
|
||||||
Source2: baselibs.conf
|
Source2: baselibs.conf
|
||||||
Source3: macros.tcl
|
Source3: macros.tcl
|
||||||
Patch0: tcl-expand-regression.patch
|
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: pkg-config
|
BuildRequires: pkg-config
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
@ -81,7 +80,6 @@ the Tcl language itself.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %name%version
|
%setup -q -n %name%version
|
||||||
%patch0
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
||||||
@ -163,7 +161,7 @@ exit 0
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,755)
|
%defattr(-,root,root,755)
|
||||||
%doc README changes license.terms ChangeLog*
|
%doc README.md changes license.terms ChangeLog*
|
||||||
%docdir %_mandir/mann
|
%docdir %_mandir/mann
|
||||||
%doc %_mandir/man1/*
|
%doc %_mandir/man1/*
|
||||||
%doc %_mandir/mann/*
|
%doc %_mandir/mann/*
|
||||||
|
3
tcl8.6.10-src.tar.gz
Normal file
3
tcl8.6.10-src.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5196dbf6638e3df8d5c87b5815c8c2b758496eb6f0e41446596c9a4e638d87ed
|
||||||
|
size 10144235
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e
|
|
||||||
size 10000896
|
|
Loading…
Reference in New Issue
Block a user