mirror of https://github.com/python/cpython
make sure the object browser can't crash because when the list data gets bigger than 32kB
This commit is contained in:
parent
b7dd49453c
commit
3c4dee4ca7
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue