Title: [172012] trunk/Tools
Revision
172012
Author
[email protected]
Date
2014-08-04 16:06:09 -0700 (Mon, 04 Aug 2014)

Log Message

lldb_webkit.py throws exception when generating summary of null StringImpl
https://bugs.webkit.org/show_bug.cgi?id=129448

Patch by Matt Baker <[email protected]> on 2014-08-04
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):

Modified Paths

Diff

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to