From 8e8bf0bad597bc5852c651cc3d814bc7435fb936 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sun, 28 Nov 2010 18:33:38 +0100 Subject: [PATCH 1/2] Try to fix g_completion pointer corruption. --- src/addr_compl.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/src/addr_compl.c b/src/addr_compl.c index 7ff56ec..f14e721 100644 --- a/src/addr_compl.c +++ b/src/addr_compl.c @@ -162,6 +162,12 @@ static gchar *completion_func(gpointer data) static void init_all(void) { g_completion = g_completion_new(completion_func); + if ((long)g_completion < 0x800000000) { + debug_print("Magically fixing g_completion pointer.\n"); + g_completion = (GCompletion*)((long)g_completion | 0x800000000); + } else { + debug_print("g_completion pointer is looking good.\n"); + } cm_return_if_fail(g_completion != NULL); } -- 1.7.3.2 From 66b6cfbf77fd52c7674ec8f0fb2225497c38f3a9 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sun, 28 Nov 2010 19:06:30 +0100 Subject: [PATCH 2/2] Undefine G_DISABLE_DEPRECATED so the prototypes from the functions in glib/gcompletion.h become visible. Without the prototypes the returned pointers seem to be treated like integers and are truncated on FreeBSD 9.0 amd64, reproducible causing segfaults when preparing for the address autocompletion. --- src/addr_compl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/addr_compl.c b/src/addr_compl.c index f14e721..dd40024 100644 --- a/src/addr_compl.c +++ b/src/addr_compl.c @@ -23,6 +23,7 @@ #endif #include "defs.h" +#undef G_DISABLE_DEPRECATED #include #include #include -- 1.7.3.2