From 14b2d30b11544bc78374f4afe230fcd680a850b4 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 1 Feb 1999 19:34:53 +0000 Subject: [PATCH] Protect against accessing an empty stack. --- Tools/idle/StackViewer.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Tools/idle/StackViewer.py b/Tools/idle/StackViewer.py index d4b8baae1a8..16823a61335 100644 --- a/Tools/idle/StackViewer.py +++ b/Tools/idle/StackViewer.py @@ -100,6 +100,7 @@ def __init__(self, master, flist, browser): ScrolledList.__init__(self, master) self.flist = flist self.browser = browser + self.stack = [] def load_stack(self, stack, index=None): self.stack = stack @@ -132,6 +133,10 @@ def load_stack(self, stack, index=None): if index is not None: self.select(index) + def popup_event(self, event): + if self.stack: + return ScrolledList.popup_event(self, event) + def fill_menu(self): menu = self.menu menu.add_command(label="Go to source line", @@ -140,7 +145,8 @@ def fill_menu(self): command=self.show_stack_frame) def on_select(self, index): - self.browser.show_frame(self.stack[index]) + if 0 <= index < len(self.stack): + self.browser.show_frame(self.stack[index]) def on_double(self, index): self.show_source(index) @@ -151,9 +157,12 @@ def goto_source_line(self): def show_stack_frame(self): index = self.listbox.index("active") - self.browser.show_frame(self.stack[index]) + if 0 <= index < len(self.stack): + self.browser.show_frame(self.stack[index]) def show_source(self, index): + if not (0 <= index < len(self.stack)): + return frame, lineno = self.stack[index] code = frame.f_code filename = code.co_filename