alleyoop r319 - in trunk: . src



Author: fejj
Date: Sun Mar  8 03:34:55 2009
New Revision: 319
URL: http://svn.gnome.org/viewvc/alleyoop?rev=319&view=rev

Log:
2009-03-07  Jeffrey Stedfast  <fejj novell com>

	* src/vghelgrindprefs.c: Updated for the new Helgrind
	configuration options.

	* src/vgmemcheckprefs.c: Add support for --ignore-ranges,
	--malloc-fill, and --free-fill.



Modified:
   trunk/ChangeLog
   trunk/src/vghelgrindprefs.c
   trunk/src/vghelgrindprefs.h
   trunk/src/vgmemcheckprefs.c
   trunk/src/vgmemcheckprefs.h

Modified: trunk/src/vghelgrindprefs.c
==============================================================================
--- trunk/src/vghelgrindprefs.c	(original)
+++ trunk/src/vghelgrindprefs.c	Sun Mar  8 03:34:55 2009
@@ -30,8 +30,10 @@
 #include "vghelgrindprefs.h"
 
 
-#define PRIVATE_STACKS_KEY    "/apps/alleyoop/valgrind/helgrind/private-stacks"
-#define SHOW_LAST_ACCESS_KEY  "/apps/alleyoop/valgrind/helgrind/show-last-access"
+#define HAPPENS_BEFORE_KEY    "/apps/alleyoop/valgrind/helgrind/happens_before"
+#define ENABLE_TRACE_ADDR_KEY "/apps/alleyoop/valgrind/helgrind/enable_trace_addr"
+#define TRACE_ADDR_KEY        "/apps/alleyoop/valgrind/helgrind/trace_addr"
+#define TRACE_LEVEL_KEY       "/apps/alleyoop/valgrind/helgrind/trace_level"
 
 static void vg_helgrind_prefs_class_init (VgHelgrindPrefsClass *klass);
 static void vg_helgrind_prefs_init (VgHelgrindPrefs *prefs);
@@ -88,7 +90,7 @@
 
 
 static void
-toggle_button_toggled (GtkToggleButton *toggle, const char *key)
+enable_trace_addr_toggled (GtkToggleButton *toggle, VgHelgrindPrefs *prefs)
 {
 	GConfClient *gconf;
 	gboolean bool;
@@ -96,11 +98,55 @@
 	gconf = gconf_client_get_default ();
 	
 	bool = gtk_toggle_button_get_active (toggle);
-	gconf_client_set_bool (gconf, key, bool, NULL);
+	gconf_client_set_bool (gconf, ENABLE_TRACE_ADDR_KEY, bool, NULL);
+	gtk_widget_set_sensitive ((GtkWidget *) prefs->trace_level, bool);
+	gtk_widget_set_sensitive ((GtkWidget *) prefs->trace_addr, bool);
 	
 	g_object_unref (gconf);
 }
 
+static char *
+decode_hex_value (const char *text)
+{
+	unsigned long int retval;
+	const char *inend;
+	
+	retval = strtoul (text, &inend, 16);
+	if (inend == text)
+		return NULL;
+	
+	return g_strdup_printf ("0x%X", retval);
+}
+
+static gboolean
+entry_focus_out (GtkEntry *entry, GdkEventFocus *event, const char *key)
+{
+	GConfClient *gconf;
+	const char *text;
+	char *str;
+	
+	gconf = gconf_client_get_default ();
+	
+	if ((text = gtk_entry_get_text (entry))) {
+		str = decode_hex_value (text);
+	} else {
+		str = NULL;
+	}
+	
+	if (str != NULL) {
+		gconf_client_set_string (gconf, key, str, NULL);
+		gtk_entry_set_text (entry, str);
+		g_free (str);
+	} else {
+		gconf_client_unset (gconf, key, NULL);
+		gtk_entry_set_text (entry, "");
+	}
+	
+	g_object_unref (gconf);
+	
+	return FALSE;
+}
+
 static void
 menu_item_activated (GtkMenuItem *item, const char *key)
 {
@@ -115,26 +161,27 @@
 	g_object_unref (gconf);
 }
 
-static char *show_last_access_opts[] = { "no", "some", "all" };
+static const char *happens_before_opts[] = { "none", "threads", "all" };
+static const char *trace_level_opts[] = { "0", "1", "2" };
 
 static GtkWidget *
-show_last_access_new (GConfClient *gconf)
+option_menu_new (GConfClient *gconf, const char **opts, int nopts, const char *key)
 {
 	GtkWidget *omenu, *menu, *item;
 	int history = 0;
 	char *str;
 	int i;
 	
-	str = gconf_client_get_string (gconf, SHOW_LAST_ACCESS_KEY, NULL);
+	str = gconf_client_get_string (gconf, key, NULL);
 	
 	menu = gtk_menu_new ();
-	for (i = 0; i < 3; i++) {
-		if (str && !strcmp (show_last_access_opts[i], str))
+	for (i = 0; i < nopts; i++) {
+		if (str && !strcmp (opts[i], str))
 			history = i;
 		
-		item = gtk_menu_item_new_with_label (show_last_access_opts[i]);
-		g_object_set_data ((GObject *) item, "value", show_last_access_opts[i]);
-		g_signal_connect (item, "activate", G_CALLBACK (menu_item_activated), SHOW_LAST_ACCESS_KEY);
+		item = gtk_menu_item_new_with_label (opts[i]);
+		g_object_set_data ((GObject *) item, "value", (char *) opts[i]);
+		g_signal_connect (item, "activate", G_CALLBACK (menu_item_activated), (char *) key);
 		gtk_widget_show (item);
 		
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
@@ -153,9 +200,10 @@
 static void
 vg_helgrind_prefs_init (VgHelgrindPrefs *prefs)
 {
+	gboolean enable_trace_addr;
 	GtkWidget *widget, *hbox;
 	GConfClient *gconf;
-	gboolean bool;
+	char *str;
 	
 	gconf = gconf_client_get_default ();
 	
@@ -163,27 +211,51 @@
 	
 	gtk_box_set_spacing ((GtkBox *) prefs, 6);
 	
-	bool = gconf_client_get_bool (gconf, PRIVATE_STACKS_KEY, NULL);
-	widget = gtk_check_button_new_with_label (_("Assume thread stacks are used privately"));
-	gtk_toggle_button_set_active ((GtkToggleButton *) widget, bool);
-	g_signal_connect (widget, "toggled", G_CALLBACK (toggle_button_toggled), PRIVATE_STACKS_KEY);
-	prefs->private_stacks = (GtkToggleButton *) widget;
+	/* --happens-before */
+	hbox = gtk_hbox_new (FALSE, 6);
+	widget = gtk_label_new (_("Consider sync points that happen before:"));
 	gtk_widget_show (widget);
-	gtk_box_pack_start ((GtkBox *) prefs, widget, FALSE, FALSE, 0);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	widget = option_menu_new (gconf, happens_before_opts, G_N_ELEMENTS (happens_before_opts), HAPPENS_BEFORE_KEY);
+	prefs->happens_before = (GtkOptionMenu *) widget;
+	gtk_widget_show (widget);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	gtk_widget_show (hbox);
+	gtk_box_pack_start ((GtkBox *) prefs, hbox, FALSE, FALSE, 0);
 	
+	/* --trace-addr */
 	hbox = gtk_hbox_new (FALSE, 6);
-	
-	widget = gtk_label_new (_("Show location of last word access on error:"));
+	widget = gtk_check_button_new_with_label (_("Trace address:"));
+	enable_trace_addr = gconf_client_get_bool (gconf, ENABLE_TRACE_ADDR_KEY, NULL);
+	gtk_toggle_button_set_active ((GtkToggleButton *) widget, enable_trace_addr);
+	g_signal_connect (widget, "toggled", G_CALLBACK (enable_trace_addr_toggled), prefs);
+	prefs->enable_trace_addr = (GtkToggleButton *) widget;
 	gtk_widget_show (widget);
 	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
-	
-	widget = show_last_access_new (gconf);
-	prefs->show_last_access = (GtkOptionMenu *) widget;
+	str = gconf_client_get_string (gconf, TRACE_ADDR_KEY, NULL);
+	widget = gtk_entry_new ();
+	gtk_entry_set_text ((GtkEntry *) widget, str ? str : "");
+	g_signal_connect (widget, "focus-out-event", G_CALLBACK (entry_focus_out), TRACE_ADDR_KEY);
+	prefs->trace_addr = (GtkEntry *) widget;
 	gtk_widget_show (widget);
 	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	gtk_widget_set_sensitive (widget, enable_trace_addr);
+	gtk_widget_show (hbox);
+	gtk_box_pack_start ((GtkBox *) prefs, hbox, FALSE, FALSE, 0);
+	g_free (str);
 	
+	/* --trace-level */
+	hbox = gtk_hbox_new (FALSE, 6);
+	widget = gtk_label_new (_("Trace level:"));
+	gtk_widget_show (widget);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	widget = option_menu_new (gconf, trace_level_opts, G_N_ELEMENTS (trace_level_opts), TRACE_LEVEL_KEY);
+	prefs->trace_level = (GtkOptionMenu *) widget;
+	gtk_widget_show (widget);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
 	gtk_widget_show (hbox);
 	gtk_box_pack_start ((GtkBox *) prefs, hbox, FALSE, FALSE, 0);
+	gtk_widget_set_sensitive (widget, enable_trace_addr);
 	
 	g_object_unref (gconf);
 }
@@ -207,54 +279,47 @@
 	;
 }
 
-enum {
-	ARG_TYPE_BOOL,
-	ARG_TYPE_STRING
-};
-
 static struct {
 	const char *key;
 	const char *arg;
+	gboolean depends;
 	char *buf;
-	int type;
-	int dval;
 } helgrind_args[] = {
-	{ PRIVATE_STACKS_KEY,   "--private-stacks",   NULL, ARG_TYPE_BOOL,   0 },
-	{ SHOW_LAST_ACCESS_KEY, "--show-last-access", NULL, ARG_TYPE_STRING, 0 },
+	{ HAPPENS_BEFORE_KEY,   "--happens-before",   FALSE, NULL },
+	{ TRACE_ADDR_KEY,       "--trace-addr",       TRUE,  NULL },
+	{ TRACE_LEVEL_KEY,      "--trace-level",      TRUE,  NULL },
 };
 
 static void
 helgrind_prefs_get_argv (VgToolPrefs *prefs, const char *tool, GPtrArray *argv)
 {
+	gboolean enable_trace_addr;
 	GConfClient *gconf;
-	gboolean bool;
 	char *str;
 	int i;
 	
 	gconf = gconf_client_get_default ();
 	
+	enable_trace_addr = gconf_client_get_bool (gconf, ENABLE_TRACE_ADDR_KEY, NULL);
+	
 	for (i = 0; i < G_N_ELEMENTS (helgrind_args); i++) {
 		const char *arg = helgrind_args[i].arg;
 		const char *key = helgrind_args[i].key;
 		
 		g_free (helgrind_args[i].buf);
-		if (helgrind_args[i].type == ARG_TYPE_BOOL) {
-			bool = gconf_client_get_bool (gconf, key, NULL) ? 1 : 0;
-			if (bool == helgrind_args[i].dval)
-				continue;
-			
-			helgrind_args[i].buf = g_strdup_printf ("%s=%s", arg, bool ? "yes" : "no");
-		} else {
-			if (!(str = gconf_client_get_string (gconf, key, NULL)) || *str == '\0') {
-				helgrind_args[i].buf = NULL;
-				g_free (str);
-				continue;
-			}
-			
-			helgrind_args[i].buf = g_strdup_printf ("%s=%s", arg, str);
+		helgrind_args[i].buf = NULL;
+		
+		if (helgrind_args[i].depends && !enable_trace_addr)
+			continue;
+		
+		if (!(str = gconf_client_get_string (gconf, key, NULL)) || *str == '\0') {
 			g_free (str);
+			continue;
 		}
 		
+		helgrind_args[i].buf = g_strdup_printf ("%s=%s", arg, str);
+		g_free (str);
+		
 		g_ptr_array_add (argv, helgrind_args[i].buf);
 	}
 	

Modified: trunk/src/vghelgrindprefs.h
==============================================================================
--- trunk/src/vghelgrindprefs.h	(original)
+++ trunk/src/vghelgrindprefs.h	Sun Mar  8 03:34:55 2009
@@ -41,8 +41,10 @@
 struct _VgHelgrindPrefs {
 	VgToolPrefs parent_object;
 	
-	GtkToggleButton *private_stacks;
-	GtkOptionMenu *show_last_access;
+	GtkOptionMenu *happens_before;
+	GtkToggleButton *enable_trace_addr;
+	GtkEntry *trace_addr;
+	GtkOptionMenu *trace_level;
 };
 
 struct _VgHelgrindPrefsClass {

Modified: trunk/src/vgmemcheckprefs.c
==============================================================================
--- trunk/src/vgmemcheckprefs.c	(original)
+++ trunk/src/vgmemcheckprefs.c	Sun Mar  8 03:34:55 2009
@@ -24,6 +24,7 @@
 
 #include <string.h>
 #include <limits.h>
+#include <ctype.h>
 
 #include <gconf/gconf-client.h>
 #include <libgnome/gnome-i18n.h>
@@ -35,8 +36,10 @@
 #define SHOW_REACHABLE_KEY         "/apps/alleyoop/valgrind/memcheck/show-reachable"
 #define LEAK_RESOLUTION_KEY        "/apps/alleyoop/valgrind/memcheck/leak-resolution"
 #define FREELIST_VOL_KEY           "/apps/alleyoop/valgrind/memcheck/freelist-vol"
+#define IGNORE_RANGES_KEY          "/apps/alleyoop/valgrind/memcheck/ignore_ranges"
+#define MALLOC_FILL_KEY            "/apps/alleyoop/valgrind/memcheck/malloc_fill"
+#define FREE_FILL_KEY              "/apps/alleyoop/valgrind/memcheck/free_fill"
 #define WORKAROUND_GCC296_BUGS_KEY "/apps/alleyoop/valgrind/memcheck/workaround-gcc296-bugs"
-#define AVOID_STRLEN_ERRORS_KEY    "/apps/alleyoop/valgrind/memcheck/avoid-strlen-errors"
 
 static void vg_memcheck_prefs_class_init (VgMemcheckPrefsClass *klass);
 static void vg_memcheck_prefs_init (VgMemcheckPrefs *prefs);
@@ -136,6 +139,107 @@
 	return FALSE;
 }
 
+static char *
+decode_hex_range (const char *text)
+{
+	const char *inptr, *inend;
+	unsigned long int retval;
+	char *str, next = ',';
+	int range_start = 0;
+	GString *output;
+	
+	output = g_string_new ("");
+	
+	inptr = text;
+	while (isspace ((int) ((unsigned char) *inptr)))
+		inptr++;
+	
+	while (*inptr) {
+		retval = strtoul (inptr, &inend, 16);
+		if (inend == inptr)
+			break;
+		
+		g_string_append_printf (output, "0x%X", retval);
+		
+		if (next == '-') {
+			range_start = output->len;
+			next = ',';
+		} else {
+			next = '-';
+		}
+		
+		inptr = inend;
+		while (isspace ((int) ((unsigned char) *inptr)))
+			inptr++;
+		
+		if (*inptr != next)
+			break;
+		
+		g_string_append_c (output, next);
+		inptr++;
+		
+		while (isspace ((int) ((unsigned char) *inptr)))
+			inptr++;
+	}
+	
+	if (range_start == 0) {
+		g_string_free (output, TRUE);
+		return NULL;
+	}
+	
+	g_string_set_size (output, range_start);
+	
+	str = output->str;
+	g_string_free (output, FALSE);
+	
+	return str;
+}
+
+static char *
+decode_hex_value (const char *text)
+{
+	unsigned long int retval;
+	const char *inend;
+	
+	retval = strtoul (text, &inend, 16);
+	if (inend == text)
+		return NULL;
+	
+	return g_strdup_printf ("0x%X", retval);
+}
+
+static gboolean
+entry_focus_out (GtkEntry *entry, GdkEventFocus *event, const char *key)
+{
+	GConfClient *gconf;
+	const char *text;
+	char *str;
+	
+	gconf = gconf_client_get_default ();
+	
+	if ((text = gtk_entry_get_text (entry))) {
+		if (key == IGNORE_RANGES_KEY)
+			str = decode_hex_range (text);
+		else
+			str = decode_hex_value (text);
+	} else {
+		str = NULL;
+	}
+	
+	if (str != NULL) {
+		gconf_client_set_string (gconf, key, str, NULL);
+		gtk_entry_set_text (entry, str);
+		g_free (str);
+	} else {
+		gconf_client_unset (gconf, key, NULL);
+		gtk_entry_set_text (entry, "");
+	}
+	
+	g_object_unref (gconf);
+	
+	return FALSE;
+}
+
 static GtkWidget *
 option_menu_new (GConfClient *gconf, char *key, char **values, int n, int def)
 {
@@ -179,6 +283,7 @@
 	GConfClient *gconf;
 	GtkWidget *widget;
 	gboolean bool;
+	char *str;
 	int num;
 	
 	gconf = gconf_client_get_default ();
@@ -192,6 +297,7 @@
 	vbox = gtk_vbox_new (FALSE, 6);
 	gtk_container_set_border_width ((GtkContainer *) vbox, 6);
 	
+	/* --leak-check */
 	hbox = gtk_hbox_new (FALSE, 6);
 	label = gtk_label_new (_("Leak check:"));
 	gtk_widget_show (label);
@@ -203,6 +309,7 @@
 	gtk_widget_show (hbox);
 	gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
 	
+	/* --show-reachable */
 	bool = gconf_client_get_bool (gconf, SHOW_REACHABLE_KEY, NULL);
 	widget = gtk_check_button_new_with_label (_("Show reachable blocks in leak check"));
 	g_signal_connect (widget, "toggled", G_CALLBACK (toggle_button_toggled), SHOW_REACHABLE_KEY);
@@ -211,6 +318,7 @@
 	gtk_widget_show (widget);
 	gtk_box_pack_start ((GtkBox *) vbox, widget, FALSE, FALSE, 0);
 	
+	/* --leak-resolution */
 	hbox = gtk_hbox_new (FALSE, 6);
 	label = gtk_label_new (_("Leak resolution:"));
 	gtk_widget_show (label);
@@ -229,6 +337,7 @@
 	gtk_widget_show (frame);
 	gtk_box_pack_start ((GtkBox *) vbox, frame, FALSE, FALSE, 0);
 	
+	/* --freelist-vol */
 	hbox = gtk_hbox_new (FALSE, 6);
 	label = gtk_label_new (_("Keep up to"));
 	gtk_widget_show (label);
@@ -248,6 +357,55 @@
 	gtk_widget_show (hbox);
 	gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
 	
+	/* --ignore-ranges */
+	hbox = gtk_hbox_new (FALSE, 6);
+	label = gtk_label_new (_("Ignore memory ranges:"));
+	gtk_widget_show (label);
+	gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 0);
+	str = gconf_client_get_string (gconf, IGNORE_RANGES_KEY, NULL);
+	widget = gtk_entry_new ();
+	gtk_entry_set_text ((GtkEntry *) widget, str ? str : "");
+	gtk_widget_show (widget);
+	prefs->ignore_ranges = (GtkEntry *) widget;
+	g_signal_connect (widget, "focus-out-event", G_CALLBACK (entry_focus_out), IGNORE_RANGES_KEY);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, TRUE, TRUE, 0);
+	gtk_widget_show (hbox);
+	gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
+	g_free (str);
+	
+	/* --malloc-fill */
+	hbox = gtk_hbox_new (FALSE, 6);
+	label = gtk_label_new (_("Fill malloc'd memory with:"));
+	gtk_widget_show (label);
+	gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 0);
+	str = gconf_client_get_string (gconf, MALLOC_FILL_KEY, NULL);
+	widget = gtk_entry_new ();
+	gtk_entry_set_text ((GtkEntry *) widget, str ? str : "");
+	gtk_widget_show (widget);
+	prefs->malloc_fill = (GtkEntry *) widget;
+	g_signal_connect (widget, "focus-out-event", G_CALLBACK (entry_focus_out), MALLOC_FILL_KEY);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	gtk_widget_show (hbox);
+	gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
+	g_free (str);
+	
+	/* --free-fill */
+	hbox = gtk_hbox_new (FALSE, 6);
+	label = gtk_label_new (_("Fill free'd memory with:"));
+	gtk_widget_show (label);
+	gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 0);
+	str = gconf_client_get_string (gconf, FREE_FILL_KEY, NULL);
+	widget = gtk_entry_new ();
+	gtk_entry_set_text ((GtkEntry *) widget, str ? str : "");
+	gtk_widget_show (widget);
+	prefs->free_fill = (GtkEntry *) widget;
+	g_signal_connect (widget, "focus-out-event", G_CALLBACK (entry_focus_out), FREE_FILL_KEY);
+	gtk_box_pack_start ((GtkBox *) hbox, widget, FALSE, FALSE, 0);
+	gtk_widget_show (hbox);
+	gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
+	g_free (str);
+	
+	/* --workaround-gcc296-bugs */
 	bool = gconf_client_get_bool (gconf, WORKAROUND_GCC296_BUGS_KEY, NULL);
 	widget = gtk_check_button_new_with_label (_("Work around bugs generated by gcc 2.96"));
 	g_signal_connect (widget, "toggled", G_CALLBACK (toggle_button_toggled), WORKAROUND_GCC296_BUGS_KEY);
@@ -256,14 +414,6 @@
 	gtk_widget_show (widget);
 	gtk_box_pack_start ((GtkBox *) vbox, widget, FALSE, FALSE, 0);
 	
-	bool = gconf_client_get_bool (gconf, AVOID_STRLEN_ERRORS_KEY, NULL);
-	widget = gtk_check_button_new_with_label (_("Ignore errors produced by inline strlen() calls"));
-	g_signal_connect (widget, "toggled", G_CALLBACK (toggle_button_toggled), AVOID_STRLEN_ERRORS_KEY);
-	gtk_toggle_button_set_active ((GtkToggleButton *) widget, bool);
-	prefs->avoid_strlen_errors = (GtkToggleButton *) widget;
-	gtk_widget_show (widget);
-	gtk_box_pack_start ((GtkBox *) vbox, widget, FALSE, FALSE, 0);
-	
 	g_object_unref (gconf);
 }
 
@@ -311,8 +461,10 @@
 	{ SHOW_REACHABLE_KEY,         "--show-reachable",         BOTH,     NULL, ARG_TYPE_BOOL,   0       },
 	{ LEAK_RESOLUTION_KEY,        "--leak-resolution",        BOTH,     NULL, ARG_TYPE_STRING, 0       },
 	{ FREELIST_VOL_KEY,           "--freelist-vol",           BOTH,     NULL, ARG_TYPE_INT,    1000000 },
+	{ IGNORE_RANGES_KEY,          "--ignore-ranges",          MEMCHECK, NULL, ARG_TYPE_STRING, 0       },
+	{ MALLOC_FILL_KEY,            "--malloc-fill",            MEMCHECK, NULL, ARG_TYPE_STRING, 0       },
+	{ FREE_FILL_KEY,              "--free-fill",              MEMCHECK, NULL, ARG_TYPE_STRING, 0       },
 	{ WORKAROUND_GCC296_BUGS_KEY, "--workaround-gcc296-bugs", BOTH,     NULL, ARG_TYPE_BOOL,   0       },
-	{ AVOID_STRLEN_ERRORS_KEY,    "--avoid-strlen-errors",    MEMCHECK, NULL, ARG_TYPE_BOOL,   1       },
 };
 
 static void
@@ -337,18 +489,21 @@
 		g_free (memcheck_args[i].buf);
 		if (memcheck_args[i].mask & mode) {
 			if (memcheck_args[i].type == ARG_TYPE_INT) {
+				/* integer value */
 				num = gconf_client_get_int (gconf, key, NULL);
 				if (num == memcheck_args[i].dval)
 					continue;
 				
 				memcheck_args[i].buf = g_strdup_printf ("%s=%d", arg, num);
 			} else if (memcheck_args[i].type == ARG_TYPE_BOOL) {
+				/* boolean value */
 				bool = gconf_client_get_bool (gconf, key, NULL) ? 1 : 0;
 				if (bool == memcheck_args[i].dval)
 					continue;
 				
 				memcheck_args[i].buf = g_strdup_printf ("%s=%s", arg, bool ? "yes" : "no");
 			} else {
+				/* string value */
 				if (!(str = gconf_client_get_string (gconf, key, NULL)) || *str == '\0') {
 					memcheck_args[i].buf = NULL;
 					g_free (str);

Modified: trunk/src/vgmemcheckprefs.h
==============================================================================
--- trunk/src/vgmemcheckprefs.h	(original)
+++ trunk/src/vgmemcheckprefs.h	Sun Mar  8 03:34:55 2009
@@ -42,11 +42,13 @@
 	VgToolPrefs parent_object;
 	
 	GtkOptionMenu *leak_check;
-	GtkToggleButton *show_reachable;
 	GtkOptionMenu *leak_resolution;
+	GtkToggleButton *show_reachable;
 	GtkSpinButton *freelist_vol;
+	GtkEntry *ignore_ranges;
+	GtkEntry *malloc_fill;
+	GtkEntry *free_fill;
 	GtkToggleButton *workaround_gcc296_bugs;
-	GtkToggleButton *avoid_strlen_errors;
 };
 
 struct _VgMemcheckPrefsClass {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]