]> granicus.if.org Git - python/commitdiff
make sure the object browser can't crash because when the list data gets bigger than...
authorJust van Rossum <just@letterror.com>
Mon, 16 Sep 2002 21:18:49 +0000 (21:18 +0000)
committerJust van Rossum <just@letterror.com>
Mon, 16 Sep 2002 21:18:49 +0000 (21:18 +0000)
Mac/Tools/IDE/PyBrowser.py

index c1a3d055e24c10f48a230ff91dd5ab0598a92fc1..2bb1686be0a9615d0fad26f56296956d2bd4f40e 100644 (file)
@@ -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