/* Pointer to the varobj hash table (built at run time) */
static struct vlist **varobj_table;
-#if defined(FREEIF)
-#undef FREEIF
-#endif
-#define FREEIF(x) if (x != NULL) free((char *) (x))
-
/* Is the variable X one of our "fake" children? */
#define CPLUS_FAKE_CHILD(x) \
((x) != NULL && (x)->type == NULL && (x)->value == NULL)
enum varobj_type type)
{
struct varobj *var;
- struct frame_info *fi, *old_fi;
+ struct frame_info *fi;
+ struct frame_info *old_fi = NULL;
struct block *block;
struct cleanup *old_chain;
if (!gdb_evaluate_expression (exp, &value))
{
/* We cannot proceed without a valid expression. */
- FREEIF (exp);
+ xfree (exp);
return 0;
}
}
VALUE_ADDRESS (temp) += offset;
- val = value_assign (temp, value);
+ if (!gdb_value_assign (temp, value, &val))
+ return 0;
VALUE_ADDRESS (val) -= offset;
value_free (var->value);
release_value (val);
int error2;
struct varobj *v;
struct varobj **cv;
- struct varobj **templist;
+ struct varobj **templist = NULL;
value_ptr new;
struct vstack *stack = NULL;
struct vstack *result = NULL;
vc->child->parent = NULL;
delete_variable_1 (resultp, delcountp, vc->child, 0, only_children_p);
next = vc->next;
- free (vc);
+ xfree (vc);
}
/* if we were called to delete only the children we are done here */
else
prev->next = cv->next;
- free (cv);
+ xfree (cv);
/* If root, remove varobj from root list */
if (var->root->rootvar == var)
/* Does a child with the name NAME exist in VAR? If so, return its data.
If not, return NULL. */
static struct varobj *
-child_exists (var, name)
- struct varobj *var; /* Parent */
- char *name; /* name of child */
+child_exists (struct varobj *var, char *name)
{
struct varobj_child *vc;
if (var->root->rootvar == var)
{
free_current_contents ((char **) &var->root->exp);
- FREEIF (var->root);
+ xfree (var->root);
}
- FREEIF (var->name);
- FREEIF (var->obj_name);
- FREEIF (var);
+ xfree (var->name);
+ xfree (var->obj_name);
+ xfree (var);
}
static void
s = *pstack;
v = s->var;
*pstack = (*pstack)->next;
- free (s);
+ xfree (s);
return v;
}
s = *pstack;
v = s->name;
*pstack = (*pstack)->next;
- free (s);
+ xfree (s);
return v;
}
{
case TYPE_CODE_STRUCT:
case TYPE_CODE_UNION:
+ case TYPE_CODE_ARRAY:
r = 0;
break;
That means we need to descend into all baseclasses and find out
how many are there, too. */
static void
-cplus_class_num_children (type, children)
- struct type *type;
- int children[3];
+cplus_class_num_children (struct type *type, int children[3])
{
int i;