From 2fc4475db29cbcd6c29ebe769b2071166c3e8af0 Mon Sep 17 00:00:00 2001 Message-Id: <2fc4475db29cbcd6c29ebe769b2071166c3e8af0.1714921437.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 7 Jul 2007 15:30:48 +0100 Subject: [PATCH] Disable use of libgc on libglib and descendants. I believe that somewhere the latter is still allocating memory outside of libgc's ability to detect it, but I cannot determine where. Organization: Straylight/Edgeware From: rjk@greenend.org.uk <> GtkScale format-value callbacks fixed to use g_strdup(). --- .bzrignore | 1 + disobedience/control.c | 6 +++--- disobedience/disobedience.c | 15 --------------- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/.bzrignore b/.bzrignore index 5b9a524..b183b9f 100644 --- a/.bzrignore +++ b/.bzrignore @@ -87,3 +87,4 @@ templates/Makefile doc/disorder-speaker.8.html .gdb_history core +vgcore.* diff --git a/disobedience/control.c b/disobedience/control.c index 776aff1..197e244 100644 --- a/disobedience/control.c +++ b/disobedience/control.c @@ -233,7 +233,7 @@ static gchar *format_volume(GtkScale attribute((unused)) *scale, char s[32]; snprintf(s, sizeof s, "%.1f", (double)value); - return xstrdup(s); + return g_strdup(s); } /* Called to format the balance value. */ @@ -242,9 +242,9 @@ static gchar *format_balance(GtkScale attribute((unused)) *scale, char s[32]; if(fabs(value) < 0.1) - return xstrdup("0"); + return g_strdup("0"); snprintf(s, sizeof s, "%+.1f", (double)value); - return xstrdup(s); + return g_strdup(s); } /* Volume mapping. We consider left, right, volume to be in [0,1] diff --git a/disobedience/disobedience.c b/disobedience/disobedience.c index 28eeeff..49560fb 100644 --- a/disobedience/disobedience.c +++ b/disobedience/disobedience.c @@ -58,15 +58,6 @@ int volume_l, volume_r; /* volume */ double goesupto = 10; /* volume upper bound */ int choosealpha; /* break up choose by letter */ -static const GMemVTable glib_memvtable = { - xmalloc, - xrealloc, - xfree, - 0, /* calloc */ - 0, /* try_malloc */ - 0 /* try_realloc */ -}; - static const disorder_eclient_log_callbacks gdisorder_log_callbacks = { log_connected, log_completed, @@ -331,12 +322,6 @@ int main(int argc, char **argv) { mem_init(1); if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale"); /* Causes GTK+ to 0-fill lots of things, which helps the garbage collector. */ - g_mem_gc_friendly = 1; - /* Causes GTK+ to always use g_malloc() instead of private allocator that - * libgc doesn't know about */ - g_slice_set_config(G_SLICE_CONFIG_ALWAYS_MALLOC, 1); - /* GLib sucks - not const-correct */ - g_mem_set_vtable((GMemVTable *)&glib_memvtable); gtk_init(&argc, &argv); gtk_rc_parse_string(style); while((n = getopt_long(argc, argv, "hVc:dtH", options, 0)) >= 0) { -- [mdw]