Date: Wednesday, September 26, 2018 @ 08:20:27
  Author: ronald
Revision: 385159

upgpkg: sakura 3.6.0-2

fix segfault FS#60100

Added:
  sakura/trunk/segfault.patch
Modified:
  sakura/trunk/PKGBUILD

----------------+
 PKGBUILD       |   10 ++++++--
 segfault.patch |   62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2018-09-26 08:20:10 UTC (rev 385158)
+++ PKGBUILD    2018-09-26 08:20:27 UTC (rev 385159)
@@ -3,7 +3,7 @@
 
 pkgname=sakura
 pkgver=3.6.0
-pkgrel=1
+pkgrel=2
 pkgdesc="A terminal emulator based on GTK and VTE"
 arch=('x86_64')
 url="https://launchpad.net/sakura";
@@ -10,8 +10,9 @@
 license=('GPL')
 depends=('vte3' 'libxft')
 makedepends=('cmake')
-source=("https://launchpad.net/sakura/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.bz2";)
-sha1sums=('df5c1d9974062a1eaf5659fa36f51c4d5a689eae')
+source=("https://launchpad.net/sakura/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.bz2";
 "segfault.patch")
+sha256sums=('a1161f3cedde20a7e1bc5981b3e6ab3b91d2cd3a5ffe35c792a7fa402a1e86e0'
+            'bc9f2364a85261ac7f6e031556b9a3bb71a2be3384ef3f049806df03b12936c7')
 
 prepare() {
   cd "$srcdir/${pkgname}-${pkgver}"
@@ -18,6 +19,9 @@
 
   # Set default font size a bit smaller
   sed -i 's|#define DEFAULT_FONT "Bitstream Vera Sans Mono 14"|#define 
DEFAULT_FONT "Bitstream Vera Sans Mono 10"|g' src/sakura.c
+
+  # segfault fix FS#60100
+  patch -Np0 -i ${srcdir}/segfault.patch
 }
 
 build() {

Added: segfault.patch
===================================================================
--- segfault.patch                              (rev 0)
+++ segfault.patch      2018-09-26 08:20:27 UTC (rev 385159)
@@ -0,0 +1,62 @@
+=== modified file 'src/sakura.c'
+--- src/sakura.c       2018-05-02 19:22:43 +0000
++++ src/sakura.c       2018-09-16 13:26:19 +0000
+@@ -339,6 +339,7 @@
+       bool label_set_byuser;
+       GtkBorder padding;   /* inner-property data */
+       int colorset;
++      gulong exit_handler_id;
+ };
+ 
+ 
+@@ -984,31 +985,6 @@
+       if (npages==1) {
+               sakura_config_done();
+       }
+-
+-      /* Workaround for libvte strange behaviour. There is not child-exited 
signal for
+-         the last terminal, so we need to kill it here.  Check with libvte 
authors about
+-         child-exited/eof signals */
+-      if (gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook))==0) {
+-
+-              term = sakura_get_page_term(sakura, 0);
+-
+-              if (option_hold==TRUE) {
+-                      SAY("hold option has been activated");
+-                      return;
+-              }
+-
+-        //SAY("waiting for terminal pid (in eof) %d", term->pid);
+-        //waitpid(term->pid, &status, WNOHANG);
+-      /* TODO: check wait return */
+-              /* Child should be automatically reaped because we don't use 
G_SPAWN_DO_NOT_REAP_CHILD flag */
+-              g_spawn_close_pid(term->pid);
+-
+-              sakura_del_tab(0);
+-
+-              npages = 
gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));
+-              if (npages==0)
+-                      sakura_destroy();
+-      }       
+ }
+ 
+ /* This handler is called when window title changes, and is used to change 
window and notebook pages titles */
+@@ -3167,7 +3143,7 @@
+       g_signal_connect(G_OBJECT(term->vte), "bell", G_CALLBACK(sakura_beep), 
NULL);
+       g_signal_connect(G_OBJECT(term->vte), "increase-font-size", 
G_CALLBACK(sakura_increase_font), NULL);
+       g_signal_connect(G_OBJECT(term->vte), "decrease-font-size", 
G_CALLBACK(sakura_decrease_font), NULL);
+-      g_signal_connect(G_OBJECT(term->vte), "child-exited", 
G_CALLBACK(sakura_child_exited), NULL);
++      term->exit_handler_id = g_signal_connect(G_OBJECT(term->vte), 
"child-exited", G_CALLBACK(sakura_child_exited), NULL);
+       g_signal_connect(G_OBJECT(term->vte), "eof", G_CALLBACK(sakura_eof), 
NULL);
+       g_signal_connect(G_OBJECT(term->vte), "window-title-changed", 
G_CALLBACK(sakura_title_changed), NULL);
+       g_signal_connect_swapped(G_OBJECT(term->vte), "button-press-event", 
G_CALLBACK(sakura_button_press), sakura.menu);
+@@ -3366,6 +3342,7 @@
+       }
+ 
+       gtk_widget_hide(term->hbox);
++      g_signal_handler_disconnect (term->vte, term->exit_handler_id);
+       gtk_notebook_remove_page(GTK_NOTEBOOK(sakura.notebook), page);
+ 
+       /* Find the next page, if it exists, and grab focus */
+
+

Reply via email to