avoid python exception in FrameDecorator.py
This fixes a bug in FrameDecorator.py. FrameVars seems to assume that Frame.block can return None if there is no block. However, it actually throws an exception. I saw this bug while developing a frame filter, but unfortunately I don't know how to reproduce it. It seems to me that the SAL tests in _is_limited_frame should exclude the bad cases; and in my attempts to write a test they do. Nevertheless I think the fix is reasonably obvious and ought to go in. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16485: * python/lib/gdb/FrameDecorator.py: (FrameVars.fetch_frame_args): Handle exception from frame.block. (FrameVars.fetch_frame_locals): Likewise.
This commit is contained in:
parent
0740f8d82d
commit
83b645b833
@ -1,3 +1,10 @@
|
|||||||
|
2014-01-23 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
PR python/16485:
|
||||||
|
* python/lib/gdb/FrameDecorator.py: (FrameVars.fetch_frame_args):
|
||||||
|
Handle exception from frame.block.
|
||||||
|
(FrameVars.fetch_frame_locals): Likewise.
|
||||||
|
|
||||||
2014-01-23 Tom Tromey <tromey@redhat.com>
|
2014-01-23 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
PR python/16487:
|
PR python/16487:
|
||||||
|
@ -258,7 +258,10 @@ class FrameVars(object):
|
|||||||
are no frame local variables, return an empty list."""
|
are no frame local variables, return an empty list."""
|
||||||
lvars = []
|
lvars = []
|
||||||
|
|
||||||
block = self.frame.block()
|
try:
|
||||||
|
block = self.frame.block()
|
||||||
|
except RuntimeError:
|
||||||
|
block = None
|
||||||
|
|
||||||
while block != None:
|
while block != None:
|
||||||
if block.is_global or block.is_static:
|
if block.is_global or block.is_static:
|
||||||
@ -279,7 +282,12 @@ class FrameVars(object):
|
|||||||
there are no frame argument variables, return an empty list."""
|
there are no frame argument variables, return an empty list."""
|
||||||
|
|
||||||
args = []
|
args = []
|
||||||
block = self.frame.block()
|
|
||||||
|
try:
|
||||||
|
block = self.frame.block()
|
||||||
|
except RuntimeError:
|
||||||
|
block = None
|
||||||
|
|
||||||
while block != None:
|
while block != None:
|
||||||
if block.function != None:
|
if block.function != None:
|
||||||
break
|
break
|
||||||
|
Loading…
Reference in New Issue
Block a user