aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/python/python-value.c16
2 files changed, 14 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 56480f1..1178a93 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2009-07-07 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ * python/python-value.c (valpy_getitem): Don't return from TRY_CATCH.
+
2009-07-07 Sami Wagiaalla <swagiaal@redhat.com>
* cp-support.h (struct using_direct): Rename members inner and
diff --git a/gdb/python/python-value.c b/gdb/python/python-value.c
index 5304caf..948ff06 100644
--- a/gdb/python/python-value.c
+++ b/gdb/python/python-value.c
@@ -267,8 +267,7 @@ valpy_getitem (PyObject *self, PyObject *key)
{
value_object *self_value = (value_object *) self;
char *field = NULL;
- struct value *idx = NULL;
- struct value *res_val = NULL; /* Initialize to appease gcc warning. */
+ struct value *res_val = NULL;
volatile struct gdb_exception except;
if (gdbpy_is_string (key))
@@ -290,12 +289,17 @@ valpy_getitem (PyObject *self, PyObject *key)
value code throw an exception if the index has an invalid
type. */
struct value *idx = convert_value_from_python (key);
- if (idx == NULL)
- return NULL;
-
- res_val = value_subscript (tmp, value_as_long (idx));
+ if (idx != NULL)
+ res_val = value_subscript (tmp, value_as_long (idx));
}
}
+
+ if (res_val == NULL)
+ {
+ gdb_assert (field == NULL);
+ return NULL;
+ }
+
if (field)
xfree (field);
GDB_PY_HANDLE_EXCEPTION (except);