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
|