From 14b2d30b11544bc78374f4afe230fcd680a850b4 Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Mon, 1 Feb 1999 19:34:53 +0000
Subject: 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 d4b8baa..16823a6 100644
--- a/Tools/idle/StackViewer.py
+++ b/Tools/idle/StackViewer.py
@@ -100,6 +100,7 @@ class StackViewer(ScrolledList):
         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 @@ class StackViewer(ScrolledList):
         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 @@ class StackViewer(ScrolledList):
                          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 @@ class StackViewer(ScrolledList):
 
     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
-- 
cgit v0.12