Bjørn Lie
0b5c066cd6
- Add epiphany-web-app-utils_Fix-crash.patch: Fix crash when web app profile lacks .app file and broken web apps should crash in a nicer way. OBS-URL: https://build.opensuse.org/request/show/711357 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/epiphany?expand=0&rev=317
95 lines
3.5 KiB
Diff
95 lines
3.5 KiB
Diff
From 4111f158a9498898a27535fc68914738002f6631 Mon Sep 17 00:00:00 2001
|
|
From: Michael Catanzaro <mcatanzaro@igalia.com>
|
|
Date: Wed, 19 Jun 2019 12:46:37 -0500
|
|
Subject: [PATCH] web-app-utils: Fix crash when web app profile lacks .app file
|
|
|
|
We free with the wrong free function
|
|
---
|
|
lib/ephy-web-app-utils.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/lib/ephy-web-app-utils.c b/lib/ephy-web-app-utils.c
|
|
index 64ace3fc3..715fd4ef1 100644
|
|
--- a/lib/ephy-web-app-utils.c
|
|
+++ b/lib/ephy-web-app-utils.c
|
|
@@ -627,7 +627,7 @@ ephy_web_application_get_application_list_internal (gboolean only_legacy)
|
|
if (g_file_test (app_file, G_FILE_TEST_EXISTS))
|
|
applications = g_list_prepend (applications, app);
|
|
else
|
|
- g_object_unref (app);
|
|
+ g_free (app);
|
|
} else
|
|
applications = g_list_prepend (applications, app);
|
|
}
|
|
--
|
|
2.21.0
|
|
|
|
|
|
From 75f0212b8edbf1771cacc08a195546bee3e0df63 Mon Sep 17 00:00:00 2001
|
|
From: Michael Catanzaro <mcatanzaro@igalia.com>
|
|
Date: Tue, 18 Jun 2019 21:15:03 +0000
|
|
Subject: [PATCH] Broken web apps should crash in a nicer way
|
|
|
|
Although #713 is fixed for new users, anyone who previously suffered
|
|
from a broken web app migration is doomed to eternal crashes. We
|
|
probably can't reasonably recover the broken profile dir, but we should
|
|
at least try to warn users what is going on.
|
|
|
|
|
|
(cherry picked from commit 53724537137c593076e9ca58add46387babdf16b)
|
|
---
|
|
lib/ephy-settings.c | 36 +++++++++++++++++++++++++++++-------
|
|
1 file changed, 29 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/lib/ephy-settings.c b/lib/ephy-settings.c
|
|
index 97e6a631a..f7e5ead69 100644
|
|
--- a/lib/ephy-settings.c
|
|
+++ b/lib/ephy-settings.c
|
|
@@ -89,15 +89,37 @@ ephy_settings_get (const char *schema)
|
|
ephy_settings_init ();
|
|
|
|
gsettings = g_hash_table_lookup (settings, schema);
|
|
-
|
|
- if (gsettings == NULL) {
|
|
- gsettings = g_settings_new (schema);
|
|
- if (gsettings == NULL)
|
|
- g_warning ("Invalid schema %s requested", schema);
|
|
- else
|
|
- g_hash_table_insert (settings, g_strdup (schema), gsettings);
|
|
+ if (gsettings)
|
|
+ return gsettings;
|
|
+
|
|
+ if (strcmp (schema, EPHY_PREFS_WEB_APP_SCHEMA) == 0) {
|
|
+ /* EPHY_PREFS_WEB_APP_SCHEMA won't be added to the settings table if the
|
|
+ * ephy_profile_dir_is_web_application() is FALSE. But we can still get
|
|
+ * here in EPHY_EMBED_SHELL_MODE_APPLICATION if the profile dir is broken
|
|
+ * such that its .app file is missing. This includes any web apps created by
|
|
+ * Epiphany 3.30 or earlier that were migrated to 3.32 before 3.32.3 before
|
|
+ * the main profile migration. This generally means anybody using Epiphany
|
|
+ * only for web apps has wound up with broken web apps after the migration.
|
|
+ *
|
|
+ * We can only crash, but it's nicer to crash here rather than crash later.
|
|
+ *
|
|
+ * https://gitlab.gnome.org/GNOME/epiphany/issues/713
|
|
+ */
|
|
+ g_error ("Epiphany is trying to access web app settings outside web app"
|
|
+ " mode. Your web app may be broken. If so, you must delete it and"
|
|
+ " recreate. See epiphany#713.");
|
|
}
|
|
|
|
+ /* schema must not be relocatable, or g_settings_new() will crash. */
|
|
+ for (guint i = 0; i < G_N_ELEMENTS (ephy_prefs_relocatable_schemas); i++)
|
|
+ g_assert (strcmp (schema, ephy_prefs_relocatable_schemas[i].schema) != 0);
|
|
+
|
|
+ gsettings = g_settings_new (schema);
|
|
+ if (gsettings == NULL)
|
|
+ g_warning ("Invalid schema %s requested", schema);
|
|
+ else
|
|
+ g_hash_table_insert (settings, g_strdup (schema), gsettings);
|
|
+
|
|
return gsettings;
|
|
}
|
|
|
|
--
|
|
2.21.0
|