[Lldb-commits] [lldb] r239013 - Make the function that parses the json packets in debugserver

Jason Molenda jmolenda at apple.com
Wed Jun 3 23:03:03 PDT 2015


Author: jmolenda
Date: Thu Jun  4 01:03:03 2015
New Revision: 239013

URL: http://llvm.org/viewvc/llvm-project?rev=239013&view=rev
Log:
Make the function that parses the json packets in debugserver
a little more resilient to freely formatted json.  Greg's change
in r238279 made the json output from StructuredData unconditionally
pretty-printed and the spaces were confusing debugserver.


Modified:
    lldb/trunk/tools/debugserver/source/RNBRemote.cpp

Modified: lldb/trunk/tools/debugserver/source/RNBRemote.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/RNBRemote.cpp?rev=239013&r1=239012&r2=239013&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/RNBRemote.cpp (original)
+++ lldb/trunk/tools/debugserver/source/RNBRemote.cpp Thu Jun  4 01:03:03 2015
@@ -4481,16 +4481,28 @@ get_integer_value_for_key_name_from_json
     uint64_t retval = INVALID_NUB_ADDRESS;
     std::string key_with_quotes = "\"";
     key_with_quotes += key;
-    key_with_quotes += "\":";
+    key_with_quotes += "\"";
     const char *c = strstr (json_string, key_with_quotes.c_str());
     if (c)
     {
         c += key_with_quotes.size();
-        errno = 0;
-        retval = strtoul (c, NULL, 10);
-        if (errno != 0)
+
+        while (*c != '\0' && (*c == ' ' || *c == '\t' || *c == '\n' || *c == '\r'))
+            c++;
+
+        if (*c == ':')
         {
-            retval = INVALID_NUB_ADDRESS;
+            c++;
+
+            while (*c != '\0' && (*c == ' ' || *c == '\t' || *c == '\n' || *c == '\r'))
+                c++;
+
+            errno = 0;
+            retval = strtoul (c, NULL, 10);
+            if (errno != 0)
+            {
+                retval = INVALID_NUB_ADDRESS;
+            }
         }
     }
     return retval;





More information about the lldb-commits mailing list