diff --git a/garcon/garcon-menu-item.c b/garcon/garcon-menu-item.c index 5ee39ff41c8602056e4548846983595526bd37da..ba5b04aea9e45333dab2697e1ceadf241dabc382 100644 --- a/garcon/garcon-menu-item.c +++ b/garcon/garcon-menu-item.c @@ -703,8 +703,20 @@ garcon_menu_item_url_exec (XfceRc *rc) url = xfce_rc_read_entry_untranslated (rc, G_KEY_FILE_DESKTOP_KEY_URL, NULL); if (url != NULL) { +#if GLIB_CHECK_VERSION (2, 68, 0) string = g_string_new (url); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS g_string_replace (string, "%", "%%", 0); +G_GNUC_END_IGNORE_DEPRECATIONS +#else + string = g_string_sized_new (2 * strlen (url)); + for (const gchar *p = url; *p != '\0'; p++) + if (*p == '%') + string = g_string_append (string, "%%"); + else + string = g_string_append_c (string, *p); + string = g_string_append_c (string, '\0'); +#endif url_exec = g_strdup_printf ("exo-open '%s'", string->str); g_string_free (string, TRUE); }