upgrade to 8.6.12
This commit is contained in:
parent
51590e48c1
commit
a9e412e1c2
@ -1,35 +0,0 @@
|
||||
From f3ebeb35f3773b2e5523da6af25c8021816cfc06 Mon Sep 17 00:00:00 2001
|
||||
From: fvogel <fvogelnew1@free.fr>
|
||||
Date: Mon, 15 Oct 2018 14:26:50 +0000
|
||||
Subject: [PATCH 353/693] Another proposed fix for [4b555aca34]: text search
|
||||
-all hangs and eats all memory.
|
||||
|
||||
---
|
||||
generic/tkText.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
||||
index d43bef6b0..715e3c045 100644
|
||||
--- a/generic/tkText.c
|
||||
+++ b/generic/tkText.c
|
||||
@@ -5749,11 +5749,16 @@ SearchCore(
|
||||
/*
|
||||
* We only need to set the matchLength once for exact searches, and we
|
||||
* do it here. It is also used below as the actual pattern length, so
|
||||
- * it has dual purpose.
|
||||
+ * it has dual purpose. Warning: to properly advance between matches
|
||||
+ * the matchLength can't be zero (which would happen when searching
|
||||
+ * for an empty string).
|
||||
*/
|
||||
|
||||
pattern = Tcl_GetString(patObj);
|
||||
matchLength = patObj->length;
|
||||
+ if (matchLength == 0) {
|
||||
+ matchLength = 1;
|
||||
+ }
|
||||
nl = strchr(pattern, '\n');
|
||||
|
||||
/*
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
From 96a262ae5869d7f9875c6477cb0b23939d84ec12 Mon Sep 17 00:00:00 2001
|
||||
From: gcramer <remarcg@gmx.net>
|
||||
Date: Fri, 21 Jul 2017 14:05:07 +0000
|
||||
Subject: [PATCH 030/693] Bugfix [4966cad4d4]: Now function
|
||||
NotebookPlaceSlaves() in ttkNotebook.c will regard the active index.
|
||||
|
||||
---
|
||||
generic/ttk/ttkNotebook.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/generic/ttk/ttkNotebook.c b/generic/ttk/ttkNotebook.c
|
||||
index 83d7db9c5..437ae11a0 100644
|
||||
--- a/generic/ttk/ttkNotebook.c
|
||||
+++ b/generic/ttk/ttkNotebook.c
|
||||
@@ -595,8 +595,12 @@ static void NotebookPlaceSlaves(void *recordPtr)
|
||||
Notebook *nb = recordPtr;
|
||||
int currentIndex = nb->notebook.currentIndex;
|
||||
if (currentIndex >= 0) {
|
||||
+ int activeIndex = nb->notebook.activeIndex;
|
||||
+ int index = (activeIndex >= 0) ? activeIndex : currentIndex;
|
||||
NotebookDoLayout(nb);
|
||||
- NotebookPlaceSlave(nb, currentIndex);
|
||||
+ if (index >= 0) {
|
||||
+ NotebookPlaceSlave(nb, index);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,33 +0,0 @@
|
||||
From 87dac59f8407ba5d74e52bf223c1b9509aa679ab Mon Sep 17 00:00:00 2001
|
||||
From: dgp <dgp@users.sourceforge.net>
|
||||
Date: Fri, 16 Nov 2018 17:44:47 +0000
|
||||
Subject: [PATCH 480/693] Crash prevention. Still buggy, now test text-11a.22
|
||||
fails instead of crashing.
|
||||
|
||||
---
|
||||
generic/tkText.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
||||
index 4c536a22d..a0de1d5d2 100644
|
||||
--- a/generic/tkText.c
|
||||
+++ b/generic/tkText.c
|
||||
@@ -5538,6 +5538,15 @@ RunAfterSyncCmd(
|
||||
return;
|
||||
}
|
||||
|
||||
+ if (textPtr->afterSyncCmd == NULL) {
|
||||
+ /*
|
||||
+ * [Bug 0a9c9151b5] Probably should have idle handlers coded so that
|
||||
+ * this cannot happen, but a safety check here at least prevents a
|
||||
+ * crash.
|
||||
+ */
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
Tcl_Preserve((ClientData) textPtr->interp);
|
||||
code = Tcl_EvalObjEx(textPtr->interp, textPtr->afterSyncCmd, TCL_EVAL_GLOBAL);
|
||||
if (code == TCL_ERROR) {
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
From 6b354b74b09729ef0b336a4c1504ed66824a4d5a Mon Sep 17 00:00:00 2001
|
||||
From: fvogel <fvogelnew1@free.fr>
|
||||
Date: Sun, 14 Jan 2018 14:54:17 +0000
|
||||
Subject: [PATCH 108/693] Fix [1821174fff] and [1938774fff]: RenderBadPicture
|
||||
(invalid Picture parameter) error returned on application exit when 'send'
|
||||
was renamed to {}. Patch from Christian Werner.
|
||||
|
||||
---
|
||||
unix/tkUnixRFont.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
||||
index d43ed2460..abdde7819 100644
|
||||
--- a/unix/tkUnixRFont.c
|
||||
+++ b/unix/tkUnixRFont.c
|
||||
@@ -388,6 +388,16 @@ FinishedWithFont(
|
||||
if (fontPtr->fontset) {
|
||||
FcFontSetDestroy(fontPtr->fontset);
|
||||
}
|
||||
+
|
||||
+ /*
|
||||
+ * Synchronize with X server before dropping the error handler.
|
||||
+ * This seems to catch sporadic RenderBadPicture errors on tear
|
||||
+ * down of an application.
|
||||
+ *
|
||||
+ * See bugs [1821174fff] and [1938774fff].
|
||||
+ */
|
||||
+ XSync(fontPtr->display, False);
|
||||
+
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
From 45f12e010e97704ab8f7b6fb932ebe14c5596779 Mon Sep 17 00:00:00 2001
|
||||
From: fvogel <fvogelnew1@free.fr>
|
||||
Date: Thu, 11 Oct 2018 20:00:40 +0000
|
||||
Subject: [PATCH 349/693] Fix [4b555aca34]: text search -all hangs and eats all
|
||||
memory
|
||||
|
||||
---
|
||||
generic/tkText.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
||||
index d43bef6b0..6c5262426 100644
|
||||
--- a/generic/tkText.c
|
||||
+++ b/generic/tkText.c
|
||||
@@ -6070,8 +6070,8 @@ SearchCore(
|
||||
matchOffset = p - startOfLine;
|
||||
|
||||
if (searchSpecPtr->all &&
|
||||
- !searchSpecPtr->foundMatchProc(lineNum, searchSpecPtr,
|
||||
- lineInfo, theLine, matchOffset, matchLength)) {
|
||||
+ (!searchSpecPtr->foundMatchProc(lineNum, searchSpecPtr,
|
||||
+ lineInfo, theLine, matchOffset, matchLength) || (matchLength == 0)) ) {
|
||||
/*
|
||||
* We reached the end of the search.
|
||||
*/
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,272 +0,0 @@
|
||||
From 27d00ef04f9ecbafef219105aa9dec4b54787b33 Mon Sep 17 00:00:00 2001
|
||||
From: fvogel <fvogelnew1@free.fr>
|
||||
Date: Sun, 28 Jan 2018 19:49:55 +0000
|
||||
Subject: [PATCH 127/693] Fix [5d991b822e]: segmentation violation in
|
||||
TclObjLookupVarEx. Patch from Christian Werner.
|
||||
|
||||
---
|
||||
generic/tkButton.c | 30 ++++++++++++++++++++++++++++--
|
||||
generic/tkEntry.c | 17 +++++++++++++++--
|
||||
generic/tkListbox.c | 17 +++++++++++++++--
|
||||
generic/tkMenu.c | 11 +++++++++++
|
||||
generic/tkMenubutton.c | 13 +++++++++++++
|
||||
generic/tkMessage.c | 13 +++++++++++++
|
||||
generic/tkScale.c | 13 +++++++++++++
|
||||
generic/ttk/ttkTrace.c | 15 +++++++++++++--
|
||||
8 files changed, 121 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/generic/tkButton.c b/generic/tkButton.c
|
||||
index b7e314e74..e114a5108 100644
|
||||
--- a/generic/tkButton.c
|
||||
+++ b/generic/tkButton.c
|
||||
@@ -1610,6 +1610,19 @@ ButtonVarProc(
|
||||
const char *value;
|
||||
Tcl_Obj *valuePtr;
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (butPtr->selVarNamePtr == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ ButtonVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is being unset, then just re-establish the trace unless
|
||||
* the whole interpreter is going away.
|
||||
@@ -1692,8 +1705,8 @@ static char *
|
||||
ButtonTextVarProc(
|
||||
ClientData clientData, /* Information about button. */
|
||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
||||
- const char *name1, /* Not used. */
|
||||
- const char *name2, /* Not used. */
|
||||
+ const char *name1, /* Name of variable. */
|
||||
+ const char *name2, /* Second part of variable name. */
|
||||
int flags) /* Information about what happened. */
|
||||
{
|
||||
TkButton *butPtr = clientData;
|
||||
@@ -1703,6 +1716,19 @@ ButtonTextVarProc(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (butPtr->textVarNamePtr == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ ButtonTextVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is unset, then immediately recreate it unless the whole
|
||||
* interpreter is going away.
|
||||
diff --git a/generic/tkEntry.c b/generic/tkEntry.c
|
||||
index 25774cc2f..678691fca 100644
|
||||
--- a/generic/tkEntry.c
|
||||
+++ b/generic/tkEntry.c
|
||||
@@ -3135,8 +3135,8 @@ static char *
|
||||
EntryTextVarProc(
|
||||
ClientData clientData, /* Information about button. */
|
||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
||||
- const char *name1, /* Not used. */
|
||||
- const char *name2, /* Not used. */
|
||||
+ const char *name1, /* Name of variable. */
|
||||
+ const char *name2, /* Second part of variable name. */
|
||||
int flags) /* Information about what happened. */
|
||||
{
|
||||
Entry *entryPtr = clientData;
|
||||
@@ -3149,6 +3149,19 @@ EntryTextVarProc(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (entryPtr->textVarName == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ EntryTextVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is unset, then immediately recreate it unless the whole
|
||||
* interpreter is going away.
|
||||
diff --git a/generic/tkListbox.c b/generic/tkListbox.c
|
||||
index b18a7f49f..5f650fed3 100644
|
||||
--- a/generic/tkListbox.c
|
||||
+++ b/generic/tkListbox.c
|
||||
@@ -3431,8 +3431,8 @@ static char *
|
||||
ListboxListVarProc(
|
||||
ClientData clientData, /* Information about button. */
|
||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
||||
- const char *name1, /* Not used. */
|
||||
- const char *name2, /* Not used. */
|
||||
+ const char *name1, /* Name of variable. */
|
||||
+ const char *name2, /* Second part of variable name. */
|
||||
int flags) /* Information about what happened. */
|
||||
{
|
||||
Listbox *listPtr = clientData;
|
||||
@@ -3440,6 +3440,19 @@ ListboxListVarProc(
|
||||
int oldLength, i;
|
||||
Tcl_HashEntry *entry;
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (listPtr->listVarName == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ ListboxListVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Bwah hahahaha! Puny mortal, you can't unset a -listvar'd variable!
|
||||
*/
|
||||
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
|
||||
index 42ddbd5ec..5859ac050 100644
|
||||
--- a/generic/tkMenu.c
|
||||
+++ b/generic/tkMenu.c
|
||||
@@ -2500,6 +2500,17 @@ MenuVarProc(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (mePtr->namePtr == NULL) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ MenuVarProc, clientData);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
name = Tcl_GetString(mePtr->namePtr);
|
||||
|
||||
/*
|
||||
diff --git a/generic/tkMenubutton.c b/generic/tkMenubutton.c
|
||||
index 1a4d5ae6e..2c1676c60 100644
|
||||
--- a/generic/tkMenubutton.c
|
||||
+++ b/generic/tkMenubutton.c
|
||||
@@ -881,6 +881,19 @@ MenuButtonTextVarProc(
|
||||
const char *value;
|
||||
unsigned len;
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (mbPtr->textVarName == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ MenuButtonTextVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is unset, then immediately recreate it unless the whole
|
||||
* interpreter is going away.
|
||||
diff --git a/generic/tkMessage.c b/generic/tkMessage.c
|
||||
index 2b7199875..f65b04687 100644
|
||||
--- a/generic/tkMessage.c
|
||||
+++ b/generic/tkMessage.c
|
||||
@@ -838,6 +838,19 @@ MessageTextVarProc(
|
||||
register Message *msgPtr = clientData;
|
||||
const char *value;
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (msgPtr->textVarName == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ MessageTextVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is unset, then immediately recreate it unless the whole
|
||||
* interpreter is going away.
|
||||
diff --git a/generic/tkScale.c b/generic/tkScale.c
|
||||
index ef67630d8..af45afa73 100644
|
||||
--- a/generic/tkScale.c
|
||||
+++ b/generic/tkScale.c
|
||||
@@ -1192,6 +1192,19 @@ ScaleVarProc(
|
||||
Tcl_Obj *valuePtr;
|
||||
int result;
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (scalePtr->varNamePtr == NULL) {
|
||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ ScaleVarProc, clientData);
|
||||
+ }
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* If the variable is unset, then immediately recreate it unless the whole
|
||||
* interpreter is going away.
|
||||
diff --git a/generic/ttk/ttkTrace.c b/generic/ttk/ttkTrace.c
|
||||
index ba66db427..e6eead2bc 100644
|
||||
--- a/generic/ttk/ttkTrace.c
|
||||
+++ b/generic/ttk/ttkTrace.c
|
||||
@@ -26,8 +26,8 @@ static char *
|
||||
VarTraceProc(
|
||||
ClientData clientData, /* Widget record pointer */
|
||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
||||
- const char *name1, /* (unused) */
|
||||
- const char *name2, /* (unused) */
|
||||
+ const char *name1, /* Name of variable. */
|
||||
+ const char *name2, /* Second part of variable name. */
|
||||
int flags) /* Information about what happened. */
|
||||
{
|
||||
Ttk_TraceHandle *tracePtr = clientData;
|
||||
@@ -38,6 +38,17 @@ VarTraceProc(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * See ticket [5d991b82].
|
||||
+ */
|
||||
+
|
||||
+ if (tracePtr->varnameObj == NULL) {
|
||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
||||
+ VarTraceProc, clientData);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
name = Tcl_GetString(tracePtr->varnameObj);
|
||||
|
||||
/*
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,203 +0,0 @@
|
||||
From 5e200188e783123842b45070a15096262e96f604 Mon Sep 17 00:00:00 2001
|
||||
From: fvogel <fvogelnew1@free.fr>
|
||||
Date: Wed, 17 Jan 2018 07:18:37 +0000
|
||||
Subject: [PATCH 115/693] More complete patch from Christian Werner to fix
|
||||
[1821174fff] and [1938774fff]
|
||||
|
||||
---
|
||||
unix/tkUnixColor.c | 1 +
|
||||
unix/tkUnixEmbed.c | 3 +++
|
||||
unix/tkUnixFocus.c | 1 +
|
||||
unix/tkUnixRFont.c | 12 +++---------
|
||||
unix/tkUnixSelect.c | 3 +++
|
||||
unix/tkUnixSend.c | 1 +
|
||||
unix/tkUnixWm.c | 9 +++++++--
|
||||
7 files changed, 19 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/unix/tkUnixColor.c b/unix/tkUnixColor.c
|
||||
index 43500ad5b..b11a1ebbc 100644
|
||||
--- a/unix/tkUnixColor.c
|
||||
+++ b/unix/tkUnixColor.c
|
||||
@@ -94,6 +94,7 @@ TkpFreeColor(
|
||||
-1, -1, -1, NULL, NULL);
|
||||
XFreeColors(DisplayOfScreen(screen), tkColPtr->colormap,
|
||||
&tkColPtr->color.pixel, 1, 0L);
|
||||
+ XSync(DisplayOfScreen(screen), False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
DeleteStressedCmap(DisplayOfScreen(screen), tkColPtr->colormap);
|
||||
diff --git a/unix/tkUnixEmbed.c b/unix/tkUnixEmbed.c
|
||||
index b170ad037..b285fbe73 100644
|
||||
--- a/unix/tkUnixEmbed.c
|
||||
+++ b/unix/tkUnixEmbed.c
|
||||
@@ -472,6 +472,7 @@ ContainerEventProc(
|
||||
|
||||
Tk_DestroyWindow((Tk_Window) winPtr);
|
||||
}
|
||||
+ XSync(eventPtr->xfocus.display, False);
|
||||
Tk_DeleteErrorHandler(errHandler);
|
||||
}
|
||||
|
||||
@@ -515,6 +516,7 @@ EmbedStructureProc(
|
||||
containerPtr->wrapper, 0, 0,
|
||||
(unsigned) Tk_Width((Tk_Window) containerPtr->parentPtr),
|
||||
(unsigned) Tk_Height((Tk_Window) containerPtr->parentPtr));
|
||||
+ XSync(eventPtr->xfocus.display, False);
|
||||
Tk_DeleteErrorHandler(errHandler);
|
||||
}
|
||||
} else if (eventPtr->type == DestroyNotify) {
|
||||
@@ -564,6 +566,7 @@ EmbedFocusProc(
|
||||
-1, -1, NULL, NULL);
|
||||
XSetInputFocus(display, containerPtr->wrapper, RevertToParent,
|
||||
CurrentTime);
|
||||
+ XSync(eventPtr->xfocus.display, False);
|
||||
Tk_DeleteErrorHandler(errHandler);
|
||||
}
|
||||
}
|
||||
diff --git a/unix/tkUnixFocus.c b/unix/tkUnixFocus.c
|
||||
index 07676181d..7f4771e9d 100644
|
||||
--- a/unix/tkUnixFocus.c
|
||||
+++ b/unix/tkUnixFocus.c
|
||||
@@ -112,6 +112,7 @@ TkpChangeFocus(
|
||||
}
|
||||
XSetInputFocus(dispPtr->display, winPtr->window, RevertToParent,
|
||||
CurrentTime);
|
||||
+ XSync(dispPtr->display, False);
|
||||
Tk_DeleteErrorHandler(errHandler);
|
||||
|
||||
/*
|
||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
||||
index abdde7819..44e733944 100644
|
||||
--- a/unix/tkUnixRFont.c
|
||||
+++ b/unix/tkUnixRFont.c
|
||||
@@ -388,16 +388,7 @@ FinishedWithFont(
|
||||
if (fontPtr->fontset) {
|
||||
FcFontSetDestroy(fontPtr->fontset);
|
||||
}
|
||||
-
|
||||
- /*
|
||||
- * Synchronize with X server before dropping the error handler.
|
||||
- * This seems to catch sporadic RenderBadPicture errors on tear
|
||||
- * down of an application.
|
||||
- *
|
||||
- * See bugs [1821174fff] and [1938774fff].
|
||||
- */
|
||||
XSync(fontPtr->display, False);
|
||||
-
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
|
||||
@@ -885,6 +876,7 @@ Tk_DrawChars(
|
||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
||||
|
||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
||||
+ XSync(display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
XGetGCValues(display, gc, GCForeground, &values);
|
||||
@@ -1018,6 +1010,7 @@ TkDrawAngledChars(
|
||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
||||
|
||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
||||
+ XSync(display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
|
||||
@@ -1107,6 +1100,7 @@ TkDrawAngledChars(
|
||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
||||
|
||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
||||
+ XSync(display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
XGetGCValues(display, gc, GCForeground, &values);
|
||||
diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c
|
||||
index 6d379ecc8..9313df5c0 100644
|
||||
--- a/unix/tkUnixSelect.c
|
||||
+++ b/unix/tkUnixSelect.c
|
||||
@@ -470,6 +470,7 @@ TkSelPropProc(
|
||||
ckfree(propPtr);
|
||||
}
|
||||
}
|
||||
+ XSync(eventPtr->xproperty.display, False);
|
||||
Tk_DeleteErrorHandler(errorHandler);
|
||||
|
||||
/*
|
||||
@@ -1048,6 +1049,7 @@ ConvertSelection(
|
||||
reply.xsel.property = incr.multAtoms[1];
|
||||
}
|
||||
XSendEvent(reply.xsel.display, reply.xsel.requestor, False, 0, &reply.ev);
|
||||
+ XSync(reply.xsel.display, False);
|
||||
Tk_DeleteErrorHandler(errorHandler);
|
||||
|
||||
/*
|
||||
@@ -1066,6 +1068,7 @@ ConvertSelection(
|
||||
errorHandler = Tk_CreateErrorHandler(winPtr->display,
|
||||
-1, -1, -1, (int (*)()) NULL, NULL);
|
||||
XSelectInput(reply.xsel.display, reply.xsel.requestor, 0L);
|
||||
+ XSync(winPtr->display, False);
|
||||
Tk_DeleteErrorHandler(errorHandler);
|
||||
if (tsdPtr->pendingIncrs == &incr) {
|
||||
tsdPtr->pendingIncrs = incr.nextPtr;
|
||||
diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c
|
||||
index bbbdd774c..0322a78d5 100644
|
||||
--- a/unix/tkUnixSend.c
|
||||
+++ b/unix/tkUnixSend.c
|
||||
@@ -1748,6 +1748,7 @@ AppendPropCarefully(
|
||||
pendingPtr);
|
||||
XChangeProperty(display, window, property, XA_STRING, 8,
|
||||
PropModeAppend, (unsigned char *) value, length);
|
||||
+ XSync(display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
|
||||
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
|
||||
index 19ac86cb5..31e14cb72 100644
|
||||
--- a/unix/tkUnixWm.c
|
||||
+++ b/unix/tkUnixWm.c
|
||||
@@ -4084,6 +4084,7 @@ ConfigureEvent(
|
||||
XMoveResizeWindow(winPtr->display, winPtr->window, 0,
|
||||
wmPtr->menuHeight, (unsigned) wrapperPtr->changes.width,
|
||||
(unsigned) (wrapperPtr->changes.height - wmPtr->menuHeight));
|
||||
+ XSync(winPtr->display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
if ((wmPtr->menubar != NULL)
|
||||
&& ((Tk_Width(wmPtr->menubar) != wrapperPtr->changes.width)
|
||||
@@ -4420,10 +4421,11 @@ WrapperEventProc(
|
||||
* Tk_DestroyWindow will try to destroy the window, but of course
|
||||
* it's already gone.
|
||||
*/
|
||||
+ Display *display = wmPtr->winPtr->display;
|
||||
|
||||
- handler = Tk_CreateErrorHandler(wmPtr->winPtr->display, -1, -1, -1,
|
||||
- NULL, NULL);
|
||||
+ handler = Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
||||
Tk_DestroyWindow((Tk_Window) wmPtr->winPtr);
|
||||
+ XSync(display, False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
}
|
||||
if (dispPtr->flags & TK_DISPLAY_WM_TRACING) {
|
||||
@@ -5846,10 +5848,12 @@ Tk_CoordsToWindow(
|
||||
* deleted
|
||||
*/
|
||||
|
||||
+ XSync(Tk_Display(tkwin), False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
return NULL;
|
||||
}
|
||||
if (child == None) {
|
||||
+ XSync(Tk_Display(tkwin), False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
return NULL;
|
||||
}
|
||||
@@ -5879,6 +5883,7 @@ Tk_CoordsToWindow(
|
||||
* or below
|
||||
*/
|
||||
|
||||
+ XSync(Tk_Display(tkwin), False);
|
||||
Tk_DeleteErrorHandler(handler);
|
||||
handler = NULL;
|
||||
}
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,19 +1,25 @@
|
||||
diff --git a/unix/tcl.m4 b/unix/tcl.m4
|
||||
index 0e146e4..613a276 100644
|
||||
index f3d08ec..dd75fc3 100644
|
||||
--- a/unix/tcl.m4
|
||||
+++ b/unix/tcl.m4
|
||||
@@ -1410,12 +1410,12 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
@@ -1382,7 +1382,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
# get rid of the warnings.
|
||||
#CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
|
||||
|
||||
- SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared'
|
||||
+ SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared -Wl,-soname,${@}'
|
||||
+ SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared -Wl,-soname,${@}'
|
||||
DL_OBJS="tclLoadDl.o"
|
||||
DL_LIBS="-ldl"
|
||||
LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
|
||||
@@ -1398,7 +1398,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
esac
|
||||
|
||||
AS_IF([test $doRpath = yes], [
|
||||
- CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
|
||||
+ CC_SEARCH_FLAGS=''])
|
||||
- CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
|
||||
+ CC_SEARCH_FLAGS=''])
|
||||
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
|
||||
AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"])
|
||||
AS_IF([test $do64bit = yes], [
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
||||
index cce59a8..78df47a 100644
|
||||
--- a/unix/tkUnixRFont.c
|
||||
+++ b/unix/tkUnixRFont.c
|
||||
@@ -271,7 +271,7 @@ InitFont(
|
||||
*/
|
||||
|
||||
set = FcFontSort(0, pattern, FcTrue, NULL, &result);
|
||||
- if (!set) {
|
||||
+ if (!set || set->nfont == 0) {
|
||||
ckfree(fontPtr);
|
||||
return NULL;
|
||||
}
|
||||
24
tk.spec
24
tk.spec
@ -2,13 +2,14 @@
|
||||
%define epoch 1
|
||||
|
||||
Name: tk
|
||||
Version: 8.6.10
|
||||
Release: 2
|
||||
Version: 8.6.12
|
||||
Release: 1
|
||||
Summary: The graphical toolkit for the Tcl scripting language
|
||||
Epoch: 1
|
||||
License: TCL
|
||||
URL: http://tcl.sourceforge.net
|
||||
Source0: http://download.sourceforge.net/sourceforge/tcl/%{name}%{version}-src.tar.gz
|
||||
|
||||
Requires: tcl = %{epoch}:%{version} glibc
|
||||
BuildRequires: gcc
|
||||
BuildRequires: tcl-devel = %{epoch}:%{version} autoconf libX11-devel libXft-devel
|
||||
@ -17,18 +18,10 @@ Conflicts: itcl <= 3.2
|
||||
Obsoletes: tile <= 0.8.2
|
||||
Provides: tile = 0.8.2
|
||||
|
||||
patch0001: Bugfix-4966cad4d4-Now-function-NotebookPlaceSlaves-i.patch
|
||||
Patch0002: Fix-1821174fff-and-1938774fff-RenderBadPicture-inval.patch
|
||||
Patch0003: More-complete-patch-from-Christian-Werner-to-fix-182.patch
|
||||
Patch0004: Fix-5d991b822e-segmentation-violation-in-TclObjLooku.patch
|
||||
Patch0005: Fix-4b555aca34-text-search-all-hangs-and-eats-all-me.patch
|
||||
Patch0006: Another-proposed-fix-for-4b555aca34-text-search-all-.patch
|
||||
Patch0007: Crash-prevention.-Still-buggy-now-test-text-11a.22-f.patch
|
||||
Patch0008: tk-8.6.10-make.patch
|
||||
Patch0009: tk-8.6.10-conf.patch
|
||||
Patch0010: tk-8.6.7-no-fonts-fix.patch
|
||||
Patch0011: tk-8.6.10-font-sizes-fix.patch
|
||||
|
||||
Patch0001: tk-8.6.10-make.patch
|
||||
Patch0002: tk-8.6.10-conf.patch
|
||||
Patch0003: tk-8.6.10-font-sizes-fix.patch
|
||||
|
||||
|
||||
%description
|
||||
TK is a widget toolkit that creates graphical user interface(GUI). It's
|
||||
@ -103,6 +96,9 @@ sed -i -e "s|$PWD/unix|%{_libdir}|; s|$PWD|%{_includedir}/%{name}-private|" %{bu
|
||||
%{_mandir}/mann/*
|
||||
|
||||
%changelog
|
||||
* Tue Apr 19 2022 wangkerong<wangkerong@h-partners.com> - 1:8.6.12-1
|
||||
- Upgrade to 1:8.6.12-1
|
||||
|
||||
* Thu May 27 2021 liuyumeng<liuyumeng5@huawei.com> - 1:8.6.10-2
|
||||
- Add a BuildRequires for gcc
|
||||
|
||||
|
||||
Binary file not shown.
BIN
tk8.6.12-src.tar.gz
Normal file
BIN
tk8.6.12-src.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user