alleyoop r319 - in trunk: . src
- From: fejj svn gnome org
- To: svn-commits-list gnome org
- Subject: alleyoop r319 - in trunk: . src
- Date: Sun, 8 Mar 2009 03:34:56 +0000 (UTC)
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]