Kaydet (Commit) 3c4dee4c authored tarafından Just van Rossum's avatar Just van Rossum

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

üst b7dd4945
...@@ -387,14 +387,26 @@ class BrowserWidget(W.CustomList): ...@@ -387,14 +387,26 @@ class BrowserWidget(W.CustomList):
if dataLen >= 6: if dataLen >= 6:
data = theList.LGetCell(dataLen, theCell) data = theList.LGetCell(dataLen, theCell)
iconId, indent, tab = struct.unpack("hhh", data[:6]) 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: if iconId:
theIcon = Icn.GetCIcon(iconId) try:
rect = (0, 0, 16, 16) theIcon = Icn.GetCIcon(iconId)
rect = Qd.OffsetRect(rect, l, t) except Icn.Error:
rect = Qd.OffsetRect(rect, 0, (theList.cellSize[1] - (rect[3] - rect[1])) / 2) pass
Icn.PlotCIcon(rect, theIcon) 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: if len(key) >= 0:
cl, ct, cr, cb = cellRect cl, ct, cr, cb = cellRect
...@@ -411,6 +423,8 @@ class BrowserWidget(W.CustomList): ...@@ -411,6 +423,8 @@ class BrowserWidget(W.CustomList):
drawTextCell(value, (cl, ct, cr, cb), ascent, theList) drawTextCell(value, (cl, ct, cr, cb), ascent, theList)
#elif dataLen != 0: #elif dataLen != 0:
# drawTextCell("???", 3, cellRect, ascent, theList) # drawTextCell("???", 3, cellRect, ascent, theList)
else:
return # we have bogus data
# draw nice dotted line # draw nice dotted line
l, t, r, b = cellRect l, t, r, b = cellRect
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment