diff options
author | Yao Qi <yao@codesourcery.com> | 2013-10-04 07:16:44 +0000 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2013-10-04 07:16:44 +0000 |
commit | 5e5ac9a570c5aeff695c0663f6cf7f91a6cb50c9 (patch) | |
tree | 75fa3b33b73234b8933ea131c6de23f941fe2bcf | |
parent | c4c2eac59e11b265c06e2a69410387515e90c89c (diff) | |
download | gdb-5e5ac9a570c5aeff695c0663f6cf7f91a6cb50c9.zip gdb-5e5ac9a570c5aeff695c0663f6cf7f91a6cb50c9.tar.gz gdb-5e5ac9a570c5aeff695c0663f6cf7f91a6cb50c9.tar.bz2 |
Fix FIXME: xstrdup should not be here
Hi,
This FIXME goes into my eyes, when I am about to modify something here,
/* Name is allocated by name_of_child. */
/* FIXME: xstrdup should not be here. */
This FIXME was introduced in the python pretty-pretter patches.
Python pretty-printing [6/6]
https://sourceware.org/ml/gdb-patches/2009-05/msg00467.html
create_child_with_value is called in two paths,
1. varobj_list_children -> create_child -> create_child_with_value,
2. install_dynamic_child -> install_dynamic_child -> varobj_add_child
-> create_child_with_value
In path #1, 'name' is allocated by name_of_child, as the original
comment said, we don't have to duplicate NAME in
create_child_with_value. In path #2, 'name' is got from
PyArg_ParseTuple, and we have to duplicate NAME.
This patch removes the call to xstrdup in create_child_with_value
and call xstrudp in update_dynamic_varobj_children (path #2).
gdb:
2013-10-04 Yao Qi <yao@codesourcery.com>
* varobj.c (create_child_with_value): Remove 'const' from the
type of parameter 'name'.
(varobj_add_child): Likewise.
(install_dynamic_child): Remove 'const' from the type of
parameter 'name'.
(varobj_add_child): Likewise.
(create_child_with_value): Likewise. Update comments. Don't
duplicate 'name'.
(update_dynamic_varobj_children): Duplicate 'name'
and pass it to install_dynamic_child.
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/varobj.c | 18 |
2 files changed, 22 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5e5427c..079e2c6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2013-10-04 Yao Qi <yao@codesourcery.com> + + * varobj.c (create_child_with_value): Remove 'const' from the + type of parameter 'name'. + (varobj_add_child): Likewise. + (install_dynamic_child): Remove 'const' from the type of + parameter 'name'. + (varobj_add_child): Likewise. + (create_child_with_value): Likewise. Update comments. Don't + duplicate 'name'. + (update_dynamic_varobj_children): Duplicate 'name' + and pass it to install_dynamic_child. + 2013-10-03 Phil Muldoon <pmuldoon@redhat.com> * python/py-value.c (convert_value_from_python): Move PyInt_Check diff --git a/gdb/varobj.c b/gdb/varobj.c index 007574f..5c30e52 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -245,7 +245,7 @@ static void uninstall_variable (struct varobj *); static struct varobj *create_child (struct varobj *, int, char *); static struct varobj * -create_child_with_value (struct varobj *parent, int index, const char *name, +create_child_with_value (struct varobj *parent, int index, char *name, struct value *value); /* Utility routines */ @@ -304,7 +304,7 @@ static int is_root_p (struct varobj *var); #if HAVE_PYTHON static struct varobj *varobj_add_child (struct varobj *var, - const char *name, + char *name, struct value *value); #endif /* HAVE_PYTHON */ @@ -994,7 +994,7 @@ install_dynamic_child (struct varobj *var, VEC (varobj_p) **unchanged, int *cchanged, int index, - const char *name, + char *name, struct value *value) { if (VEC_length (varobj_p, var->children) < index + 1) @@ -1188,7 +1188,8 @@ update_dynamic_varobj_children (struct varobj *var, can_mention ? type_changed : NULL, can_mention ? new : NULL, can_mention ? unchanged : NULL, - can_mention ? cchanged : NULL, i, name, v); + can_mention ? cchanged : NULL, i, + xstrdup (name), v); do_cleanups (inner); } else @@ -1307,7 +1308,7 @@ varobj_list_children (struct varobj *var, int *from, int *to) #if HAVE_PYTHON static struct varobj * -varobj_add_child (struct varobj *var, const char *name, struct value *value) +varobj_add_child (struct varobj *var, char *name, struct value *value) { varobj_p v = create_child_with_value (var, VEC_length (varobj_p, var->children), @@ -2394,7 +2395,7 @@ is_anonymous_child (struct varobj *child) } static struct varobj * -create_child_with_value (struct varobj *parent, int index, const char *name, +create_child_with_value (struct varobj *parent, int index, char *name, struct value *value) { struct varobj *child; @@ -2402,9 +2403,8 @@ create_child_with_value (struct varobj *parent, int index, const char *name, child = new_variable (); - /* Name is allocated by name_of_child. */ - /* FIXME: xstrdup should not be here. */ - child->name = xstrdup (name); + /* NAME is allocated by caller. */ + child->name = name; child->index = index; child->parent = parent; child->root = parent->root; |