summarylogtreecommitdiffstats
path: root/fix-second-instance-crash.patch
blob: ec84d448694cdaf02a72bbe8e19076930a8dca7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
From 380c313840dd223e5b6c35720a79c338780f42d6 Mon Sep 17 00:00:00 2001
From: Lionel Miller <delonorm@gmail.com>
Date: Wed, 14 Dec 2016 02:31:52 +0300
Subject: [PATCH] Fixed segfaults on Manjaro

On Manjaro Linux, shutter would segfault whenever it would receive
a message from another running instance of itself. This was caused
by the fact that dbus did not handle correctly messages with empty
text. This patch adds an extra check to prevent that.
---
 bin/shutter | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/bin/shutter b/bin/shutter
index a0495d4..f70980c 100755
--- a/bin/shutter
+++ b/bin/shutter
@@ -442,12 +442,14 @@ else {
                     #set export filename
                 }
                 elsif ( $cmd eq 'exfilename' ) {
-                    $sc->set_export_filename( $message->get_text );
+                    my $arg = defined $message->get ? $message->get_text : "";
+                    $sc->set_export_filename( $arg );
 
                     #set delay
                 }
                 elsif ( $cmd eq 'delay' ) {
-                    $sc->set_delay( $message->get_text );
+                    my $arg = defined $message->get ? $message->get_text : "";
+                    $sc->set_delay( $arg );
 
                     #set include_cursor flag
                 }
@@ -464,12 +466,13 @@ else {
                     #set nosession flag
                 }
                 elsif ( $cmd eq 'nosession' ) {
-                    $sc->set_no_session( $message->get_text );
+                    my $arg = defined $message->get ? $message->get_text : "";
+                    $sc->set_no_session( $arg );
 
                     #open new files
                 }
                 elsif ( $cmd eq 'fopen' ) {
-                    my @init_files = $message->get_uris;
+                    my @init_files = defined $message->get ? $message->get_uris : ();
                     if ( scalar @init_files > 0 ) {
                         &fct_open_files(@init_files);
                     }
@@ -483,7 +486,8 @@ else {
                     #take screenshot
                 }
                 else {
-                    &evt_take_screenshot( 'global_keybinding', $cmd, undef, $message->get_text );
+                    my $arg = defined $message->get ? $message->get_text : "";
+                    &evt_take_screenshot( 'global_keybinding', $cmd, undef, $arg );
                 }
             }