fixed runaway memory alloc bug on 64-bit in ParseString found by sirius-m
authors_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Fri, 5 Mar 2010 01:13:27 +0000 (01:13 +0000)
committers_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Fri, 5 Mar 2010 01:13:27 +0000 (01:13 +0000)
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@74 1a98c847-1fd6-4fd8-948a-caf3550aa51b

util.cpp

index 09de89b..acfbcd6 100644 (file)
--- a/util.cpp
+++ b/util.cpp
@@ -282,15 +282,21 @@ bool error(const char* format, ...)
 \r
 void ParseString(const string& str, char c, vector<string>& v)\r
 {\r
-    unsigned int i1 = 0;\r
-    unsigned int i2;\r
-    do\r
+    if (str.empty())\r
+        return;\r
+    string::size_type i1 = 0;\r
+    string::size_type i2;\r
+    loop\r
     {\r
         i2 = str.find(c, i1);\r
+        if (i2 == str.npos)\r
+        {\r
+            v.push_back(str.substr(i1));\r
+            return;\r
+        }\r
         v.push_back(str.substr(i1, i2-i1));\r
         i1 = i2+1;\r
     }\r
-    while (i2 != str.npos);\r
 }\r
 \r
 \r