Modified: trunk/Tools/ChangeLog (172011 => 172012)
--- trunk/Tools/ChangeLog 2014-08-04 22:25:25 UTC (rev 172011)
+++ trunk/Tools/ChangeLog 2014-08-04 23:06:09 UTC (rev 172012)
@@ -1,3 +1,19 @@
+2014-08-04 Matt Baker <[email protected]>
+
+ lldb_webkit.py throws exception when generating summary of null StringImpl
+ https://bugs.webkit.org/show_bug.cgi?id=129448
+
+ Reviewed by Jer Noble.
+
+ Added checks for null StringImpl and 0 byte ReadMemory calls.
+
+ * lldb/lldb_webkit.py:
+ (WTFStringImpl_SummaryProvider):
+ (ustring_to_string):
+ (lstring_to_string):
+ (WTFStringImplProvider.to_string):
+ (WTFStringImplProvider.is_initialized):
+
2014-08-03 Carlos Garcia Campos <[email protected]>
[GTK] Do not include _javascript_Core stress tests in release tarballs
Modified: trunk/Tools/lldb/lldb_webkit.py (172011 => 172012)
--- trunk/Tools/lldb/lldb_webkit.py 2014-08-04 22:25:25 UTC (rev 172011)
+++ trunk/Tools/lldb/lldb_webkit.py 2014-08-04 23:06:09 UTC (rev 172012)
@@ -54,6 +54,8 @@
def WTFStringImpl_SummaryProvider(valobj, dict):
provider = WTFStringImplProvider(valobj, dict)
+ if not provider.is_initialized():
+ return ""
return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_length(), provider.is_8bit(), provider.to_string())
@@ -166,6 +168,9 @@
else:
length = int(length)
+ if length == 0:
+ return ""
+
pointer = valobj.GetValueAsUnsigned()
contents = valobj.GetProcess().ReadMemory(pointer, length * 2, lldb.SBError())
@@ -183,6 +188,9 @@
else:
length = int(length)
+ if length == 0:
+ return ""
+
pointer = valobj.GetValueAsUnsigned()
contents = valobj.GetProcess().ReadMemory(pointer, length, lldb.SBError())
@@ -209,6 +217,10 @@
def to_string(self):
error = lldb.SBError()
+
+ if not self.is_initialized():
+ return u""
+
if self.is_8bit():
return lstring_to_string(self.get_data8(), error, self.get_length())
return ustring_to_string(self.get_data16(), error, self.get_length())
@@ -218,7 +230,10 @@
return bool(self.valobj.GetChildMemberWithName('m_hashAndFlags').GetValueAsUnsigned(0) \
& 1 << 5)
+ def is_initialized(self):
+ return self.valobj.GetValueAsUnsigned() != 0
+
class WTFStringProvider:
def __init__(self, valobj, dict):
self.valobj = valobj