diff options
Diffstat (limited to 'Tools/gdb/libpython.py')
-rwxr-xr-x | Tools/gdb/libpython.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index c1d2cd8..756b52c 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -871,7 +871,8 @@ class PyFrameObjectPtr(PyObjectPtr): self.f_lineno = int_from_int(self.field('f_lineno')) self.f_lasti = int_from_int(self.field('f_lasti')) self.co_nlocals = int_from_int(self.co.field('co_nlocals')) - self.co_varnames = PyTupleObjectPtr.from_pyobject_ptr(self.co.field('co_varnames')) + pnames = self.co.field('co_localsplusnames') + self.co_localsplusnames = PyTupleObjectPtr.from_pyobject_ptr(pnames) def iter_locals(self): ''' @@ -884,9 +885,10 @@ class PyFrameObjectPtr(PyObjectPtr): f_localsplus = self.field('f_localsptr') for i in safe_range(self.co_nlocals): pyop_value = PyObjectPtr.from_pyobject_ptr(f_localsplus[i]) - if not pyop_value.is_null(): - pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_varnames[i]) - yield (pyop_name, pyop_value) + if pyop_value.is_null(): + continue + pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) + yield (pyop_name, pyop_value) def _f_globals(self): f_localsplus = self.field('f_localsptr') |