Hello community, here is the log from the commit of package tcl for openSUSE:Factory checked in at 2019-01-29 14:38:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tcl (Old) and /work/SRC/openSUSE:Factory/.tcl.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tcl" Tue Jan 29 14:38:48 2019 rev:54 rq:666787 version:8.6.9 Changes: -------- --- /work/SRC/openSUSE:Factory/tcl/tcl.changes 2017-12-21 11:21:34.990252885 +0100 +++ /work/SRC/openSUSE:Factory/.tcl.new.28833/tcl.changes 2019-01-29 14:38:50.219520923 +0100 @@ -1,0 +2,59 @@ +Thu Jan 17 09:22:56 UTC 2019 - Reinhard Max <[email protected]> + +- Fix a regression in the handling of denormalized empty lists + (tcl-expand-regression.patch, tcl#cc1e91552c). + +------------------------------------------------------------------- +Wed Dec 12 16:28:09 UTC 2018 - Reinhard Max <[email protected]> + +- New version: 8.6.9: + * NR-enable [package require] + * (bug)[9fd5c6] crash in object deletion, test oo-11.5 + * (bug)[3c32a3] crash deleting object with class mixed in + * (platform) stop using -lieee, removed from glibc-2.27 + * (bug)[8e6a9a] bad binary [string match], test string-11.55 + * (bug)[1873ea] repair multi-thread std channel init + * (bug)[db36fa] broken bytecode for index values + * (bug) broken compiled [string replace], test string-14.19 + * (bug) [string trim*] engine crashed on invalid UTF + * (bug) missing trace in compiled [array set], test var-20.11 + * (bug)[46a241] crash in unset array with search, var-13.[23] + * (bug)[27b682] race made [file delete] raise "no such file" + * (bug)[925643] 32/64 cleanup of filesystem DIR operations + * (bug) leaks in TclSetEnv and env cache + * (bug)[3592747] [yieldto] dying namespace, tailcall-14.1 + * (bug)[270f78] race in [file mkdir] + * (bug)[3f7af0] [file delete] raised "permission denied" + * (bug)[d051b7] overflow crash in [format] + * revised quoting of [exec] args in generated command line + * HTTP Keep-Alive with pipelined requests + * (new)[TIP 505] [lreplace] accepts all out of range indices + * (bug) Prevent crash from NULL keyName in the registry package + * Update tcltest package for Travis support + * (bug)[35a8f1] overlong string length of some lists + * (bug)[00d04c] Repair [binary encode base64] + +------------------------------------------------------------------- +Thu Mar 15 14:54:52 CET 2018 - [email protected] + +- handle s390 like s390x (bnc#1085480) + +------------------------------------------------------------------- +Fri Dec 29 20:11:51 UTC 2017 - [email protected] + +- Version 8.6.8: + * [array names -regexp] supports backrefs + * Fix gcc build failures due to #pragma placement + * (bug)[b50fb2] exec redir append stdout and stderr to file + * (bug)[2a9465] http state 100 continue handling broken + * (bug)[0e4d88] replace command, delete trace kills namespace + * (bug)[1a5655] [info * methods] includes mixins + * (bug)[fc1409] segfault in method cloning, oo-15.15 + * (bug)[3298012] Stop crash when hash tables overflow 32 bits + * (bug)[5d6de6] Close failing case of [package prefer stable] + * (bug)[4f6a1e] Crash when ensemble map and list are same + * (bug)[ce3a21] file normalize failure when tail is empty + * (new)[TIP 477] nmake build system reform + * (bug)[586e71] EvalObjv exception handling at level #0 + +------------------------------------------------------------------- @@ -13,0 +73,6 @@ +Thu Oct 19 14:37:39 UTC 2017 - [email protected] + +- Sync SLE12 with Factory to fix a bug in Itcl that was affecting + iwidgets (bsc#903017). + +------------------------------------------------------------------- @@ -220,0 +286 @@ +- Remove obsolete patches tcl-unload.patch and tcl.patch. Old: ---- tcl8.6.7-src.tar.gz New: ---- tcl-expand-regression.patch tcl8.6.9-src.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tcl.spec ++++++ --- /var/tmp/diff_new_pack.u4b6M2/_old 2019-01-29 14:38:51.471519412 +0100 +++ /var/tmp/diff_new_pack.u4b6M2/_new 2019-01-29 14:38:51.475519408 +0100 @@ -1,7 +1,7 @@ # # spec file for package tcl # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,24 +12,25 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: tcl Url: http://www.tcl.tk -Version: 8.6.7 +Version: 8.6.9 Release: 0 %define rrc %{nil} %define TCL_MINOR %(echo %version | cut -c1-3) +%define itclver 4.1.2 BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: The Tcl Programming Language License: TCL Group: Development/Languages/Tcl -Provides: itcl = 4.0.5 +Provides: itcl = %itclver Provides: tclsh Provides: tclsh%{TCL_MINOR} -Obsoletes: itcl < 4.0.5 +Obsoletes: itcl < %itclver # bug437293 %ifarch ppc64 Obsoletes: tcl-64bit @@ -40,6 +41,7 @@ Source1: tcl-rpmlintrc Source2: baselibs.conf Source3: macros.tcl +Patch0: tcl-expand-regression.patch BuildRequires: autoconf BuildRequires: pkg-config BuildRequires: zlib-devel @@ -65,8 +67,8 @@ %ifarch ppc64 Obsoletes: tcl-devel-64bit %endif -Obsoletes: itcl-devel < 4.0.2 -Provides: itcl-devel = 4.0.2 +Obsoletes: itcl-devel < %itclver +Provides: itcl-devel = %itclver # %description devel @@ -79,6 +81,7 @@ %prep %setup -q -n %name%version +%patch0 %build cd unix @@ -133,7 +136,7 @@ thread-20.9 thread-21.16 EOF -%ifnarch s390x +%ifnarch s390 s390x make test 2>&1 | tee testresults grep FAILED testresults | grep -Fvwf known-failures && exit 1 %endif ++++++ tcl-expand-regression.patch ++++++ 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: ++++++ tcl8.6.7-src.tar.gz -> tcl8.6.9-src.tar.gz ++++++ /work/SRC/openSUSE:Factory/tcl/tcl8.6.7-src.tar.gz /work/SRC/openSUSE:Factory/.tcl.new.28833/tcl8.6.9-src.tar.gz differ: char 5, line 1
