diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2022-08-23 10:53:15 -0500 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-08-30 15:50:51 +0000 |
commit | 5712678e81408b9b006e2825e17117a51778f929 (patch) | |
tree | 4fd0b63c4d355e2d7cd809045557d85c96bcb390 | |
parent | ed8fac8acb8cd562f720c5f9cbcb19c33b88b570 (diff) | |
download | epiphany-5712678e81408b9b006e2825e17117a51778f929.tar.gz |
WebExtensions: Fix crash when failing to get translated string
ephy_web_extension_manifest_get_localized_string() will now never
return NULL.
Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1189>
-rw-r--r-- | src/webextension/ephy-web-extension.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/webextension/ephy-web-extension.c b/src/webextension/ephy-web-extension.c index 48f67e734..c1860fa9d 100644 --- a/src/webextension/ephy-web-extension.c +++ b/src/webextension/ephy-web-extension.c @@ -649,10 +649,21 @@ ephy_web_extension_manifest_get_localized_string (EphyWebExtension *self, if (g_str_has_prefix (value, "__MSG_") && g_str_has_suffix (value, "__")) { /* FIXME: Set current locale */ g_autofree char *locale = g_strdup ("en"); + g_autofree char *translated_string = NULL; + char *message_name; - /* Remove trailing __ */ + /* Strip prefix and remove trailing __ */ + message_name = value + strlen ("__MSG_"); value[strlen (value) - 2] = '\0'; - return web_extension_get_translation (self, locale, value + strlen ("__MSG_")); + + translated_string = web_extension_get_translation (self, locale, message_name); + + if (!translated_string) { + g_debug ("Failed to find '%s' translation for message '%s'", locale, message_name); + return g_strdup (""); + } + + return g_steal_pointer (&translated_string); } return g_steal_pointer (&value); |