- New version 8.6.13:
* (bug)[26f132] Crash when sizeof(int) < sizeof(void *) * (TIP 623)[e9a271] Tcl_GetRange index args < 0 * (bug)[e5ed1b] numeric IPv6 in URLs * (bug)[8eb64b] http package tolerant again invalid reply header * (bug)[6898f9] http package failed detection of shiftjis charset * (bug)[55bf73] Avoid connection reuse after response code 101. * (bug)[713653] FP rounding exposed by x86 musl * (bug)[b3977d] Process CR-LF split across packets * (bug)[4eb3a1] crash due to undetected bytecode invalidity * (bug)[55a02f] Fallback init env(HOME) from USERPROFILE * (bug)[1073da] crash writing invalid utf-8 * (new) Update to Unicode-15 * Many code fixes to avoid overflow or undefined behavior. - Add tcl-refchan-mode-needed.patch to allow refchans to be opened for neither reading nor writing, but still handle events. OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=147
This commit is contained in:
parent
fa5a64ee7b
commit
5b089007e5
98
tcl-refchan-mode-needed.patch
Normal file
98
tcl-refchan-mode-needed.patch
Normal file
@ -0,0 +1,98 @@
|
||||
--- doc/refchan.n.orig
|
||||
+++ doc/refchan.n
|
||||
@@ -53,8 +53,8 @@ here, then the \fBfinalize\fR subcommand
|
||||
.PP
|
||||
The \fImode\fR argument tells the handler whether the channel was
|
||||
opened for reading, writing, or both. It is a list containing any of
|
||||
-the strings \fBread\fR or \fBwrite\fR. The list will always
|
||||
-contain at least one element.
|
||||
+the strings \fBread\fR or \fBwrite\fR. The list may be empty, but
|
||||
+will usually contain at least one element.
|
||||
.PP
|
||||
The subcommand must throw an error if the chosen mode is not
|
||||
supported by the \fIcmdPrefix\fR.
|
||||
--- generic/tclIORChan.c.orig
|
||||
+++ generic/tclIORChan.c
|
||||
@@ -425,7 +425,7 @@ static void UnmarshallErrorResult(Tcl_I
|
||||
*/
|
||||
|
||||
static int EncodeEventMask(Tcl_Interp *interp,
|
||||
- const char *objName, Tcl_Obj *obj, int *mask);
|
||||
+ const char *objName, Tcl_Obj *obj, int *mask, int needed);
|
||||
static Tcl_Obj * DecodeEventMask(int mask);
|
||||
static ReflectedChannel * NewReflectedChannel(Tcl_Interp *interp,
|
||||
Tcl_Obj *cmdpfxObj, int mode, Tcl_Obj *handleObj);
|
||||
@@ -532,11 +532,11 @@ TclChanCreateObjCmd(
|
||||
|
||||
/*
|
||||
* First argument is a list of modes. Allowed entries are "read", "write".
|
||||
- * Expect at least one list element. Abbreviations are ok.
|
||||
+ * Empty list is uncommon, but allowed. Abbreviations are ok.
|
||||
*/
|
||||
|
||||
modeObj = objv[MODE];
|
||||
- if (EncodeEventMask(interp, "mode", objv[MODE], &mode) != TCL_OK) {
|
||||
+ if (EncodeEventMask(interp, "mode", objv[MODE], &mode, 0) != TCL_OK) {
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
@@ -902,7 +902,7 @@ TclChanPostEventObjCmd(
|
||||
* "write". Expect at least one list element. Abbreviations are ok.
|
||||
*/
|
||||
|
||||
- if (EncodeEventMask(interp, "event", objv[EVENT], &events) != TCL_OK) {
|
||||
+ if (EncodeEventMask(interp, "event", objv[EVENT], &events, 1) != TCL_OK) {
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
@@ -2007,8 +2007,9 @@ ReflectGetOption(
|
||||
* EncodeEventMask --
|
||||
*
|
||||
* This function takes a list of event items and constructs the
|
||||
- * equivalent internal bitmask. The list must contain at least one
|
||||
- * element. Elements are "read", "write", or any unique abbreviation of
|
||||
+ * equivalent internal bitmask. The list may be empty if the last
|
||||
+ * argument is 0, otherwise it must contain at least one element.
|
||||
+ * Elements are "read", "write", or any unique abbreviation of
|
||||
* them. Note that the bitmask is not changed if problems are
|
||||
* encountered.
|
||||
*
|
||||
@@ -2028,7 +2029,8 @@ EncodeEventMask(
|
||||
Tcl_Interp *interp,
|
||||
const char *objName,
|
||||
Tcl_Obj *obj,
|
||||
- int *mask)
|
||||
+ int *mask,
|
||||
+ int needed)
|
||||
{
|
||||
int events; /* Mask of events to post */
|
||||
int listc; /* #elements in eventspec list */
|
||||
@@ -2040,7 +2042,7 @@ EncodeEventMask(
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
- if (listc < 1) {
|
||||
+ if (needed && listc < 1) {
|
||||
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
||||
"bad %s list: is empty", objName));
|
||||
return TCL_ERROR;
|
||||
--- tests/ioCmd.test.orig
|
||||
+++ tests/ioCmd.test
|
||||
@@ -670,12 +670,12 @@ test iocmd-21.1 {chan create, wrong#args
|
||||
catch {chan create a b c} msg
|
||||
set msg
|
||||
} {wrong # args: should be "chan create mode cmdprefix"}
|
||||
-test iocmd-21.2 {chan create, invalid r/w mode, empty} {
|
||||
- proc foo {} {}
|
||||
- catch {chan create {} foo} msg
|
||||
+test iocmd-21.2 {chan create, r/w mode empty} {
|
||||
+ proc foo {cmd args} { return "initialize finalize watch" }
|
||||
+ set chan [chan create {} foo]
|
||||
+ close $chan
|
||||
rename foo {}
|
||||
- set msg
|
||||
-} {bad mode list: is empty}
|
||||
+} {}
|
||||
test iocmd-21.3 {chan create, invalid r/w mode, bad string} {
|
||||
proc foo {} {}
|
||||
catch {chan create {c} foo} msg
|
20
tcl.changes
20
tcl.changes
@ -1,3 +1,23 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 23 16:05:02 UTC 2022 - Reinhard Max <max@suse.com>
|
||||
|
||||
- New version 8.6.13:
|
||||
* (bug)[26f132] Crash when sizeof(int) < sizeof(void *)
|
||||
* (TIP 623)[e9a271] Tcl_GetRange index args < 0
|
||||
* (bug)[e5ed1b] numeric IPv6 in URLs
|
||||
* (bug)[8eb64b] http package tolerant again invalid reply header
|
||||
* (bug)[6898f9] http package failed detection of shiftjis charset
|
||||
* (bug)[55bf73] Avoid connection reuse after response code 101.
|
||||
* (bug)[713653] FP rounding exposed by x86 musl
|
||||
* (bug)[b3977d] Process CR-LF split across packets
|
||||
* (bug)[4eb3a1] crash due to undetected bytecode invalidity
|
||||
* (bug)[55a02f] Fallback init env(HOME) from USERPROFILE
|
||||
* (bug)[1073da] crash writing invalid utf-8
|
||||
* (new) Update to Unicode-15
|
||||
* Many code fixes to avoid overflow or undefined behavior.
|
||||
- Add tcl-refchan-mode-needed.patch to allow refchans to be opened
|
||||
for neither reading nor writing, but still handle events.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 21 14:25:37 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
|
6
tcl.spec
6
tcl.spec
@ -22,11 +22,11 @@
|
||||
|
||||
Name: tcl
|
||||
URL: http://www.tcl.tk
|
||||
Version: 8.6.12
|
||||
Version: 8.6.13
|
||||
Release: 0
|
||||
%define rrc %{nil}
|
||||
%define TCL_MINOR %(echo %version | cut -c1-3)
|
||||
%define itclver 4.2.2
|
||||
%define itclver 4.2.3
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Summary: The Tcl Programming Language
|
||||
License: TCL
|
||||
@ -48,6 +48,7 @@ Source0: http://prdownloads.sourceforge.net/tcl/%{name}%{version}%{rrc}-s
|
||||
Source1: tcl-rpmlintrc
|
||||
Source2: baselibs.conf
|
||||
Source3: macros.tcl
|
||||
Patch0: tcl-refchan-mode-needed.patch
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: pkg-config
|
||||
BuildRequires: zlib-devel
|
||||
@ -91,6 +92,7 @@ if ! test -d pkgs/itcl%itclver; then
|
||||
: Version mismatch in itcl, please chek the %%itclver macro!
|
||||
exit 1
|
||||
fi
|
||||
%patch0
|
||||
|
||||
# The SQLite extension is provided by the sqlite3 package,
|
||||
# so don't build it here.
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:26c995dd0f167e48b11961d891ee555f680c175f7173ff8cb829f4ebcde4c1a6
|
||||
size 10353486
|
BIN
tcl8.6.13-src.tar.gz
(Stored with Git LFS)
Normal file
BIN
tcl8.6.13-src.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user