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


Reply via email to