From: Just van Rossum <just@letterror.com>
Date: Mon, 16 Sep 2002 21:18:49 +0000 (+0000)
Subject: make sure the object browser can't crash because when the list data gets bigger than... 
X-Git-Tag: v2.3c1~4055
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3c4dee4ca70083ff45b36fa7d60e0051c32e40a9;p=python

make sure the object browser can't crash because when the list data gets bigger than 32kB
---

diff --git a/Mac/Tools/IDE/PyBrowser.py b/Mac/Tools/IDE/PyBrowser.py
index c1a3d055e2..2bb1686be0 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