Accepting request 459017 from GNOME:Next
Add upstream bug fix patches OBS-URL: https://build.opensuse.org/request/show/459017 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/file-roller?expand=0&rev=235
This commit is contained in:
parent
eb8d740298
commit
a9a4ddd6f2
92
file-roller-fix-crash-after-extracting.patch
Normal file
92
file-roller-fix-crash-after-extracting.patch
Normal file
@ -0,0 +1,92 @@
|
||||
From a9d765035f5b0786834fa6311e3780788484411a Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bacchilega <paobac@src.gnome.org>
|
||||
Date: Sat, 18 Feb 2017 08:54:53 +0100
|
||||
Subject: fixed crash after extracting a file
|
||||
|
||||
[bug #778846]
|
||||
---
|
||||
src/fr-window.c | 33 ++++++++++++++++++++++++++++-----
|
||||
1 file changed, 28 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/fr-window.c b/src/fr-window.c
|
||||
index 3d63fe0..1fd803b 100644
|
||||
--- a/src/fr-window.c
|
||||
+++ b/src/fr-window.c
|
||||
@@ -6432,7 +6432,7 @@ extract_data_new (FrWindow *window,
|
||||
ExtractData *edata;
|
||||
|
||||
edata = g_new0 (ExtractData, 1);
|
||||
- edata->window = window;
|
||||
+ edata->window = _g_object_ref (window);
|
||||
edata->file_list = _g_string_list_dup (file_list);
|
||||
edata->destination = _g_object_ref (destination);
|
||||
edata->skip_older = skip_older;
|
||||
@@ -6454,6 +6454,7 @@ extract_data_free (ExtractData *edata)
|
||||
|
||||
_g_string_list_free (edata->file_list);
|
||||
_g_object_unref (edata->destination);
|
||||
+ _g_object_unref (edata->window);
|
||||
g_free (edata->base_dir);
|
||||
|
||||
g_free (edata);
|
||||
@@ -6597,6 +6598,29 @@ _fr_window_archive_extract_from_edata (FrWindow *window,
|
||||
static void _fr_window_ask_overwrite_dialog (OverwriteData *odata);
|
||||
|
||||
|
||||
+static OverwriteData *
|
||||
+overwrite_data_new (FrWindow *window)
|
||||
+{
|
||||
+ OverwriteData *odata;
|
||||
+
|
||||
+ odata = g_new0 (OverwriteData, 1);
|
||||
+ odata->window = _g_object_ref (window);
|
||||
+ odata->edata = NULL;
|
||||
+ odata->current_file = NULL;
|
||||
+ odata->extract_all = FALSE;
|
||||
+
|
||||
+ return odata;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void
|
||||
+overwrite_data_free (OverwriteData *odata)
|
||||
+{
|
||||
+ _g_object_unref (odata->window);
|
||||
+ g_free (odata);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* remove the file from the list to extract */
|
||||
static void
|
||||
overwrite_data_skip_current (OverwriteData *odata)
|
||||
@@ -6644,7 +6668,7 @@ overwrite_dialog_response_cb (GtkDialog *dialog,
|
||||
|
||||
if (do_not_extract) {
|
||||
fr_window_batch_stop (odata->window);
|
||||
- g_free (odata);
|
||||
+ overwrite_data_free (odata);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6775,7 +6799,7 @@ _fr_window_ask_overwrite_dialog (OverwriteData *odata)
|
||||
fr_window_dnd_extraction_finished (odata->window, TRUE);
|
||||
}
|
||||
|
||||
- g_free (odata);
|
||||
+ overwrite_data_free (odata);
|
||||
}
|
||||
|
||||
|
||||
@@ -6903,8 +6927,7 @@ _fr_window_archive_extract_from_edata_maybe (FrWindow *window,
|
||||
if (edata->overwrite == FR_OVERWRITE_ASK) {
|
||||
OverwriteData *odata;
|
||||
|
||||
- odata = g_new0 (OverwriteData, 1);
|
||||
- odata->window = window;
|
||||
+ odata = overwrite_data_new (window);
|
||||
odata->edata = edata;
|
||||
odata->extract_all = (edata->file_list == NULL) || (g_list_length (edata->file_list) == window->archive->files->len);
|
||||
if (edata->file_list == NULL)
|
||||
--
|
||||
cgit v0.12
|
||||
|
25
file-roller-libarchive-dont-convert-null-strings.patch
Normal file
25
file-roller-libarchive-dont-convert-null-strings.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 78a608ae8d0058fdf202da5b561c1cbdd937ad99 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bacchilega <paobac@src.gnome.org>
|
||||
Date: Sat, 18 Feb 2017 08:52:54 +0100
|
||||
Subject: libarchive: don't convert null strings to utf8
|
||||
|
||||
---
|
||||
src/fr-archive-libarchive.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c
|
||||
index 3ac1004..70c07e2 100644
|
||||
--- a/src/fr-archive-libarchive.c
|
||||
+++ b/src/fr-archive-libarchive.c
|
||||
@@ -321,7 +321,7 @@ _g_error_new_from_archive_error (const char *s)
|
||||
char *msg;
|
||||
GError *error;
|
||||
|
||||
- msg = g_locale_to_utf8 (s, -1, NULL, NULL, NULL);
|
||||
+ msg = (s != NULL) ? g_locale_to_utf8 (s, -1, NULL, NULL, NULL) : NULL;
|
||||
if (msg == NULL)
|
||||
msg = g_strdup ("Fatal error");
|
||||
error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, msg);
|
||||
--
|
||||
cgit v0.12
|
||||
|
119
file-roller-open-dest-dialog-only-when-using-notify.patch
Normal file
119
file-roller-open-dest-dialog-only-when-using-notify.patch
Normal file
@ -0,0 +1,119 @@
|
||||
From 347a917c0504a9c5ccfd0b8041e40d56ec9bd74a Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bacchilega <paobac@src.gnome.org>
|
||||
Date: Sat, 18 Feb 2017 09:24:18 +0100
|
||||
Subject: show the 'open destination' dialog only when using --notify
|
||||
|
||||
and only for the last extracted archive
|
||||
---
|
||||
src/fr-application.c | 13 ++++++++-----
|
||||
src/fr-window.c | 10 ++++++----
|
||||
src/fr-window.h | 8 +++++---
|
||||
3 files changed, 19 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/fr-application.c b/src/fr-application.c
|
||||
index 98aac18..025c775 100644
|
||||
--- a/src/fr-application.c
|
||||
+++ b/src/fr-application.c
|
||||
@@ -296,7 +296,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
g_signal_connect (window, "ready", G_CALLBACK (window_ready_cb), invocation);
|
||||
|
||||
fr_window_batch_new (FR_WINDOW (window), C_("Window title", "Extract archive"));
|
||||
- fr_window_batch__extract (FR_WINDOW (window), archive, destination);
|
||||
+ fr_window_batch__extract (FR_WINDOW (window), archive, destination, use_progress_dialog);
|
||||
fr_window_batch_append_action (FR_WINDOW (window), FR_BATCH_ACTION_QUIT, NULL, NULL);
|
||||
fr_window_batch_start (FR_WINDOW (window));
|
||||
|
||||
@@ -322,7 +322,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
g_signal_connect (window, "ready", G_CALLBACK (window_ready_cb), invocation);
|
||||
|
||||
fr_window_batch_new (FR_WINDOW (window), C_("Window title", "Extract archive"));
|
||||
- fr_window_batch__extract_here (FR_WINDOW (window), archive);
|
||||
+ fr_window_batch__extract_here (FR_WINDOW (window), archive, use_progress_dialog);
|
||||
fr_window_batch_append_action (FR_WINDOW (window), FR_BATCH_ACTION_QUIT, NULL, NULL);
|
||||
fr_window_batch_start (FR_WINDOW (window));
|
||||
|
||||
@@ -604,13 +604,16 @@ fr_application_command_line (GApplication *application,
|
||||
|
||||
fr_window_batch_new (FR_WINDOW (window), C_("Window title", "Extract archive"));
|
||||
while ((archive = remaining_args[i++]) != NULL) {
|
||||
- GFile *file;
|
||||
+ GFile *file;
|
||||
+ gboolean last_archive;
|
||||
|
||||
file = g_application_command_line_create_file_for_arg (command_line, archive);
|
||||
+ last_archive = (remaining_args[i] == NULL);
|
||||
+
|
||||
if (arg_extract_here == 1)
|
||||
- fr_window_batch__extract_here (FR_WINDOW (window), file);
|
||||
+ fr_window_batch__extract_here (FR_WINDOW (window), file, arg_notify && last_archive);
|
||||
else
|
||||
- fr_window_batch__extract (FR_WINDOW (window), file, extraction_destination);
|
||||
+ fr_window_batch__extract (FR_WINDOW (window), file, extraction_destination, arg_notify && last_archive);
|
||||
|
||||
g_object_unref (file);
|
||||
}
|
||||
diff --git a/src/fr-window.c b/src/fr-window.c
|
||||
index 1fd803b..bbddde7 100644
|
||||
--- a/src/fr-window.c
|
||||
+++ b/src/fr-window.c
|
||||
@@ -9819,7 +9819,8 @@ fr_window_batch_get_title (FrWindow *window)
|
||||
|
||||
void
|
||||
fr_window_batch__extract_here (FrWindow *window,
|
||||
- GFile *archive)
|
||||
+ GFile *archive,
|
||||
+ gboolean ask_to_open_destination)
|
||||
{
|
||||
g_return_if_fail (window != NULL);
|
||||
g_return_if_fail (archive != NULL);
|
||||
@@ -9837,7 +9838,7 @@ fr_window_batch__extract_here (FrWindow *window,
|
||||
FALSE,
|
||||
FR_OVERWRITE_ASK,
|
||||
FALSE,
|
||||
- _fr_window_get_ask_to_open_destination (window),
|
||||
+ ask_to_open_destination,
|
||||
TRUE),
|
||||
(GFreeFunc) extract_data_free);
|
||||
fr_window_batch_append_action (window,
|
||||
@@ -9850,7 +9851,8 @@ fr_window_batch__extract_here (FrWindow *window,
|
||||
void
|
||||
fr_window_batch__extract (FrWindow *window,
|
||||
GFile *archive,
|
||||
- GFile *destination)
|
||||
+ GFile *destination,
|
||||
+ gboolean ask_to_open_destination)
|
||||
{
|
||||
g_return_if_fail (window != NULL);
|
||||
g_return_if_fail (archive != NULL);
|
||||
@@ -9869,7 +9871,7 @@ fr_window_batch__extract (FrWindow *window,
|
||||
FALSE,
|
||||
FR_OVERWRITE_ASK,
|
||||
FALSE,
|
||||
- _fr_window_get_ask_to_open_destination (window),
|
||||
+ ask_to_open_destination,
|
||||
FALSE),
|
||||
(GFreeFunc) extract_data_free);
|
||||
else
|
||||
diff --git a/src/fr-window.h b/src/fr-window.h
|
||||
index 4ea0f4e..7bbffec 100644
|
||||
--- a/src/fr-window.h
|
||||
+++ b/src/fr-window.h
|
||||
@@ -306,10 +306,12 @@ void fr_window_batch_resume (FrWindow *window);
|
||||
gboolean fr_window_is_batch_mode (FrWindow *window);
|
||||
void fr_window_batch__extract (FrWindow *window,
|
||||
GFile *archive,
|
||||
- GFile *destination);
|
||||
+ GFile *destination,
|
||||
+ gboolean ask_to_open_destination);
|
||||
void fr_window_batch__extract_here (FrWindow *window,
|
||||
- GFile *archive);
|
||||
-void fr_window_batch__add_files (FrWindow *window,
|
||||
+ GFile *archive,
|
||||
+ gboolean ask_to_open_destination);
|
||||
+void fr_window_batch__add_files (FrWindow *window,
|
||||
GFile *archive,
|
||||
GList *file_list);
|
||||
void fr_window_destroy_with_error_dialog (FrWindow *window);
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,3 +1,14 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Feb 19 10:59:10 UTC 2017 - zaitor@opensuse.org
|
||||
|
||||
- Add file-roller-open-dest-dialog-only-when-using-notify.patch:
|
||||
Show the 'open destination' dialog only when using --notify and
|
||||
only for the last extracted archive.
|
||||
- Add file-roller-libarchive-dont-convert-null-strings.patch: Don't
|
||||
convert null strings to utf8.
|
||||
- Add file-roller-fix-crash-after-extracting.patch: Fix a crash
|
||||
after extracting a file (bgo#778846, boo#1022082).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 11 10:19:11 UTC 2016 - dimstar@opensuse.org
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package file-roller
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -28,6 +28,13 @@ Source: http://download.gnome.org/sources/file-roller/3.22/%{name}-%{ver
|
||||
Patch0: file-roller-3.4-change-archiver-priority.patch
|
||||
# PATCH-FEATURE-OPENSUSE file-roller-pkg-match.patch bnc#696530 dimstar@opensuse.org -- List package match names for automatic installation using PK.
|
||||
Patch1: file-roller-pkg-match.patch
|
||||
# PATCH-FIX-UPSTREAM file-roller-libarchive-dont-convert-null-strings.patch zaitor@opensuse.org -- Don't convert null strings to utf8
|
||||
Patch2: file-roller-libarchive-dont-convert-null-strings.patch
|
||||
# PATCH-FIX-UPSTREAM file-roller-fix-crash-after-extracting.patch bgo#778846 boo#1022082 zaitor@opensuse.org -- Fix a crash after extracting a file
|
||||
Patch3: file-roller-fix-crash-after-extracting.patch
|
||||
# PATCH-FIX-UPSTREAM file-roller-open-dest-dialog-only-when-using-notify.patch zaitor@opensuse.org -- show the 'open destination' dialog only when using --notify
|
||||
Patch4: file-roller-open-dest-dialog-only-when-using-notify.patch
|
||||
|
||||
# Needed for directory ownership
|
||||
BuildRequires: dbus-1
|
||||
BuildRequires: fdupes
|
||||
@ -87,6 +94,9 @@ contained in the archive, and extract files from the archive.
|
||||
%setup -q
|
||||
%patch0
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%if !0%{?is_opensuse}
|
||||
translation-update-upstream
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user