diff options
author | Tom Tromey <tromey@redhat.com> | 2011-12-22 19:51:09 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2011-12-22 19:51:09 +0000 |
commit | dbe5eff289dde3ca4b8e603e753004477fd712e7 (patch) | |
tree | 04564a73f915fd6fdb7577f374e07d775a3424eb /gdb/varobj.c | |
parent | 93f66bbd89f354e4e91b54e0c840656d818b5a45 (diff) | |
download | gdb-dbe5eff289dde3ca4b8e603e753004477fd712e7.tar.gz |
PR python/12533:
* value.h (release_value_or_incref): Declare.
* value.c (struct value) <released>: New field.
(free_all_values, release_value, value_release_to_mark): Update
'released'.
(release_value_or_incref): New function.
* python/py-value.c (valpy_new): Use release_value_or_incref.
(value_to_value_object): Likewise.
* varobj.c (install_new_value): Move value_incref earlier.
Diffstat (limited to 'gdb/varobj.c')
-rw-r--r-- | gdb/varobj.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gdb/varobj.c b/gdb/varobj.c index 7c68a93bb03..0d5987cb0b7 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -1604,6 +1604,10 @@ install_new_value (struct varobj *var, struct value *value, int initial) } } + /* Get a reference now, before possibly passing it to any Python + code that might release it. */ + if (value != NULL) + value_incref (value); /* Below, we'll be comparing string rendering of old and new values. Don't get string rendering if the value is @@ -1671,8 +1675,6 @@ install_new_value (struct varobj *var, struct value *value, int initial) if (var->value != NULL && var->value != value) value_free (var->value); var->value = value; - if (value != NULL) - value_incref (value); if (value && value_lazy (value) && intentionally_not_fetched) var->not_fetched = 1; else |