diff options
author | Just van Rossum <just@letterror.com> | 2002-09-16 21:18:49 (GMT) |
---|---|---|
committer | Just van Rossum <just@letterror.com> | 2002-09-16 21:18:49 (GMT) |
commit | 3c4dee4ca70083ff45b36fa7d60e0051c32e40a9 (patch) | |
tree | b242b2f29b55d5dd62c06427fb761009476275a0 | |
parent | b7dd49453c974f2446f5b13c7c14e078b01a6829 (diff) | |
download | cpython-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.py | 26 |
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 |