summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJust van Rossum <just@letterror.com>2002-09-16 21:18:49 (GMT)
committerJust van Rossum <just@letterror.com>2002-09-16 21:18:49 (GMT)
commit3c4dee4ca70083ff45b36fa7d60e0051c32e40a9 (patch)
treeb242b2f29b55d5dd62c06427fb761009476275a0
parentb7dd49453c974f2446f5b13c7c14e078b01a6829 (diff)
downloadcpython-3c4dee4ca70083ff45b36fa7d60e0051c32e40a9.zip
cpython-3c4dee4ca70083ff45b36fa7d60e0051c32e40a9.tar.gz
cpython-3c4dee4ca70083ff45b36fa7d60e0051c32e40a9.tar.bz2
make sure the object browser can't crash because when the list data gets bigger than 32kB
-rw-r--r--Mac/Tools/IDE/PyBrowser.py26
1 files changed, 20 insertions, 6 deletions
diff --git a/Mac/Tools/IDE/PyBrowser.py b/Mac/Tools/IDE/PyBrowser.py
index c1a3d05..2bb1686 100644
--- a/Mac/Tools/IDE/PyBrowser.py
+++ b/Mac/Tools/IDE/PyBrowser.py
@@ -387,14 +387,26 @@ class BrowserWidget(W.CustomList):
if dataLen >= 6:
data = theList.LGetCell(dataLen, theCell)
iconId, indent, tab = struct.unpack("hhh", data[:6])
- key, value = data[6:].split("\t", 1)
+ try:
+ key, value = data[6:].split("\t", 1)
+ except ValueError:
+ # bogus data, at least don't crash.
+ indent = 0
+ tab = 0
+ iconId = 0
+ key = ""
+ value = data[6:]
if iconId:
- theIcon = Icn.GetCIcon(iconId)
- rect = (0, 0, 16, 16)
- rect = Qd.OffsetRect(rect, l, t)
- rect = Qd.OffsetRect(rect, 0, (theList.cellSize[1] - (rect[3] - rect[1])) / 2)
- Icn.PlotCIcon(rect, theIcon)
+ try:
+ theIcon = Icn.GetCIcon(iconId)
+ except Icn.Error:
+ pass
+ else:
+ rect = (0, 0, 16, 16)
+ rect = Qd.OffsetRect(rect, l, t)
+ rect = Qd.OffsetRect(rect, 0, (theList.cellSize[1] - (rect[3] - rect[1])) / 2)
+ Icn.PlotCIcon(rect, theIcon)
if len(key) >= 0:
cl, ct, cr, cb = cellRect
@@ -411,6 +423,8 @@ class BrowserWidget(W.CustomList):
drawTextCell(value, (cl, ct, cr, cb), ascent, theList)
#elif dataLen != 0:
# drawTextCell("???", 3, cellRect, ascent, theList)
+ else:
+ return # we have bogus data
# draw nice dotted line
l, t, r, b = cellRect