[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#772156: unblock: vte2.91/0.38.1-2



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hi,

please unblock vte2.91 for a few selected bugfixes.

vte2.91 (0.38.1-2) unstable; urgency=medium

  * Bug fixes from upstream git:
    + 10_check_cursor_display.patch: check the cursor’s display before 
      using it.
    + 11_cjk_ambiguous_width.patch: copy-paste bug in properties.
    + 12_zombies.patch, 13_zombies.patch: don’t leave zombie processes 
      around. Closes: #770596.

Attaching the individual patches.

unblock vte2.91/0.38.1-2

Thanks,
-- 
 .''`.        Josselin Mouette
: :' :
`. `'
  `-
>From 5cff499de0122b44d60c189ec138b2853af10a6c Mon Sep 17 00:00:00 2001
From: Christian Persch <chpe@gnome.org>
Date: Mon, 3 Nov 2014 18:38:30 +0100
Subject: widget: Check cursor's display before using it

(cherry picked from commit 19963440f9da89e2a3035c8a7488a92a244f22e3)

diff --git a/src/vte.c b/src/vte.c
index 9374fe6..28b7be9 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -1147,7 +1147,8 @@ vte_terminal_set_cursor_from_regex_match(VteTerminal *terminal, struct vte_match
 
         switch (regex->cursor_mode) {
                 case VTE_REGEX_CURSOR_GDKCURSOR:
-                        if (regex->cursor.cursor != NULL) {
+                        if (regex->cursor.cursor != NULL &&
+                            gdk_cursor_get_display(regex->cursor.cursor) == gtk_widget_get_display(&terminal->widget)) {
                                 cursor = g_object_ref(regex->cursor.cursor);
                         }
                         break;
-- 
cgit v0.10.1

>From 102468e58fe48512ef100e439577d08c2ba4fb7f Mon Sep 17 00:00:00 2001
From: Egmont Koblinger <egmont@gmail.com>
Date: Sat, 22 Nov 2014 13:33:33 +0100
Subject: widget: Fix installing the CJK ambiguous width property

(cherry picked from commit 447266e2925527f898d3e9d048db7cecd2397cb7)

diff --git a/src/vte.c b/src/vte.c
index 28b7be9..c6172fc 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -11286,7 +11286,7 @@ vte_terminal_class_init(VteTerminalClass *klass)
          */
         g_object_class_install_property
                 (gobject_class,
-                 PROP_CURSOR_BLINK_MODE,
+                 PROP_CJK_AMBIGUOUS_WIDTH,
                  g_param_spec_int ("cjk-ambiguous-width", NULL, NULL,
                                    1, 2, VTE_ISO2022_DEFAULT_UTF8_AMBIGUOUS_WIDTH,
                                     G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
-- 
cgit v0.10.1

>From d9d83d455a5b67fcce030c56fbd8de921dc3fa6d Mon Sep 17 00:00:00 2001
From: Egmont Koblinger <egmont@gmail.com>
Date: Mon, 1 Dec 2014 13:30:52 +0100
Subject: widget: Do not leave behind a zombie child when closing a terminal

https://bugzilla.gnome.org/show_bug.cgi?id=740929
(cherry picked from commit 31b150146189b49fadd126edc1c373ada234c865)

diff --git a/src/vte.c b/src/vte.c
index c6172fc..e5149c9 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -3210,6 +3210,12 @@ vte_terminal_child_watch_cb(GPid pid,
                             int status,
                             VteTerminal *terminal)
 {
+	if (terminal == NULL) {
+		/* The child outlived VteTerminal. Do nothing, we're happy that Glib
+		 * read its exit data and hence it's no longer there as zombie. */
+		return;
+	}
+
 	if (pid == terminal->pvt->pty_pid) {
                 GObject *object = G_OBJECT(terminal);
 
@@ -8416,11 +8422,15 @@ vte_terminal_finalize(GObject *object)
 		terminal->pvt->outgoing_conv = VTE_INVALID_CONV;
 	}
 
-	/* Stop listening for child-exited signals. */
+	/* Start listening for child-exited signals and ignore them, so that no zombie child is left behind. */
         if (terminal->pvt->child_watch_source != 0) {
                 g_source_remove (terminal->pvt->child_watch_source);
                 terminal->pvt->child_watch_source = 0;
         }
+        g_child_watch_add_full(G_PRIORITY_HIGH,
+                               terminal->pvt->pty_pid,
+                               (GChildWatchFunc)vte_terminal_child_watch_cb,
+                               NULL, NULL);
 
 	/* Stop processing input. */
 	vte_terminal_stop_processing (terminal);
-- 
cgit v0.10.1

>From b033047970a7bb7e9e17c6e38ce5107daf704a7a Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Thu, 4 Dec 2014 16:46:00 +0100
Subject: widget: Reap only when a child is present

https://bugzilla.gnome.org/show_bug.cgi?id=740929
(cherry picked from commit 5f19e0b08cb06c76d989592e1a859ac3a23b8b4b)

diff --git a/src/vte.c b/src/vte.c
index e5149c9..5919416 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -8426,11 +8426,11 @@ vte_terminal_finalize(GObject *object)
         if (terminal->pvt->child_watch_source != 0) {
                 g_source_remove (terminal->pvt->child_watch_source);
                 terminal->pvt->child_watch_source = 0;
+                g_child_watch_add_full(G_PRIORITY_HIGH,
+                                       terminal->pvt->pty_pid,
+                                       (GChildWatchFunc)vte_terminal_child_watch_cb,
+                                       NULL, NULL);
         }
-        g_child_watch_add_full(G_PRIORITY_HIGH,
-                               terminal->pvt->pty_pid,
-                               (GChildWatchFunc)vte_terminal_child_watch_cb,
-                               NULL, NULL);
 
 	/* Stop processing input. */
 	vte_terminal_stop_processing (terminal);
-- 
cgit v0.10.1


Reply to: