From 618aecd349b2c269f5cec3e1490ddba191125ea5 Mon Sep 17 00:00:00 2001 From: deepend Date: Tue, 24 Feb 2026 20:29:48 -0700 Subject: [PATCH] Fixed a crash-prone memory management path in Linux URL launching by only freeing the previous environment vector when g_environ_unsetenv() returns a different pointer. This avoids freeing memory that may still be owned/returned as-is by GLib, which matches your segfault symptoms when opening links from the AppImage build. The fix is in fe_open_url_inner() right where LD_LIBRARY_PATH and LD_PRELOAD are sanitized before spawning xdg-open. --- src/fe-gtk/fe-gtk.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index 568d0d1b..42f18966 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -1693,11 +1693,13 @@ fe_open_url_inner (const char *url) { gchar **tmp_env = spawn_env; spawn_env = g_environ_unsetenv (tmp_env, "LD_LIBRARY_PATH"); - g_strfreev (tmp_env); + if (spawn_env != tmp_env) + g_strfreev (tmp_env); tmp_env = spawn_env; spawn_env = g_environ_unsetenv (tmp_env, "LD_PRELOAD"); - g_strfreev (tmp_env); + if (spawn_env != tmp_env) + g_strfreev (tmp_env); } /* Prefer xdg-open when available because gtk_show_uri can inherit