Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 14b2d30

Browse files
committed
Protect against accessing an empty stack.
1 parent 6aa4257 commit 14b2d30

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

Tools/idle/StackViewer.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ def __init__(self, master, flist, browser):
100100
ScrolledList.__init__(self, master)
101101
self.flist = flist
102102
self.browser = browser
103+
self.stack = []
103104

104105
def load_stack(self, stack, index=None):
105106
self.stack = stack
@@ -132,6 +133,10 @@ def load_stack(self, stack, index=None):
132133
if index is not None:
133134
self.select(index)
134135

136+
def popup_event(self, event):
137+
if self.stack:
138+
return ScrolledList.popup_event(self, event)
139+
135140
def fill_menu(self):
136141
menu = self.menu
137142
menu.add_command(label="Go to source line",
@@ -140,7 +145,8 @@ def fill_menu(self):
140145
command=self.show_stack_frame)
141146

142147
def on_select(self, index):
143-
self.browser.show_frame(self.stack[index])
148+
if 0 <= index < len(self.stack):
149+
self.browser.show_frame(self.stack[index])
144150

145151
def on_double(self, index):
146152
self.show_source(index)
@@ -151,9 +157,12 @@ def goto_source_line(self):
151157

152158
def show_stack_frame(self):
153159
index = self.listbox.index("active")
154-
self.browser.show_frame(self.stack[index])
160+
if 0 <= index < len(self.stack):
161+
self.browser.show_frame(self.stack[index])
155162

156163
def show_source(self, index):
164+
if not (0 <= index < len(self.stack)):
165+
return
157166
frame, lineno = self.stack[index]
158167
code = frame.f_code
159168
filename = code.co_filename

0 commit comments

Comments
 (0)