From 2019b026decfdae8829b198eaf17762ff6a5cf13 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Sun, 2 Jul 2017 12:07:18 -0500
Subject: downloads-manager: Fix crash when download fails
It's wrong to acquire the session inhibitor when destination is created,
because the download could fail before that point, causing the
inhibitotr to be released before it has been acquired and triggering our
assertions to ensure this does not happen.
Instead, acquire the inhibitor immediately when creating the download.
https://bugzilla.gnome.org/show_bug.cgi?id=778653
embed/ephy-downloads-manager.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/embed/ephy-downloads-manager.c b/embed/ephy-downloads-manager.c
index a2c13c4..d61e168 100644
--- embed/ephy-downloads-manager.c
+++ embed/ephy-downloads-manager.c
@@ -155,12 +155,6 @@ download_estimated_progress_changed_cb (EphyDownloadsManager *manager)
g_signal_emit (manager, signals[ESTIMATED_PROGRESS_CHANGED], 0);
-download_created_destination_cb (EphyDownloadsManager *manager)
- ephy_downloads_manager_acquire_session_inhibitor (manager);
ephy_downloads_manager_add_download (EphyDownloadsManager *manager,
@@ -173,6 +167,8 @@ ephy_downloads_manager_add_download (EphyDownloadsManager *manager,
if (g_list_find (manager->downloads, download))
+ ephy_downloads_manager_acquire_session_inhibitor (manager);
manager->downloads = g_list_prepend (manager->downloads, g_object_ref (download));
g_signal_connect (download, "completed",
G_CALLBACK (download_completed_cb),
@@ -185,9 +181,6 @@ ephy_downloads_manager_add_download (EphyDownloadsManager *manager,
g_signal_connect_swapped (wk_download, "notify::estimated-progress",
G_CALLBACK (download_estimated_progress_changed_cb),
- g_signal_connect_swapped (wk_download, "created-destination",
- G_CALLBACK (download_created_destination_cb),
g_signal_emit (manager, signals[DOWNLOAD_ADDED], 0, download);
g_signal_emit (manager, signals[ESTIMATED_PROGRESS_CHANGED], 0);