]> git.saurik.com Git - cycript.git/blobdiff - Console.cpp
Fix a size initialization bug.
[cycript.git] / Console.cpp
index c4303f683344f2b77bd16374f00cca15e44318d1..1afdb2fe93ef2c9d5f601b9458dc9ecf6c250c22 100644 (file)
@@ -141,7 +141,9 @@ static CYUTF8String Run(CYPool &pool, int client, CYUTF8String code) {
         json = NULL;
 #endif
         mode_ = Working;
-        if (json != NULL)
+        if (json == NULL)
+            size = 0;
+        else
             size = strlen(json);
     } else {
         mode_ = Sending;
@@ -334,7 +336,14 @@ static char **Complete(const char *word, int start, int end) {
         CYString *string(dynamic_cast<CYString *>(element->value_));
         _assert(string != NULL);
 
-        std::string completion(string->value_, string->size_);
+        std::string completion;
+        if (string->size_ != 0)
+            completion.assign(string->value_, string->size_);
+        else if (driver.mode_ == CYDriver::AutoMessage)
+            completion = "]";
+        else
+            continue;
+
         completions.push_back(completion);
 
         if (!rest) {
@@ -358,12 +367,6 @@ static char **Complete(const char *word, int start, int end) {
     if (count == 0)
         return NULL;
 
-    if (!common.empty()) {
-        size_t size(prefix.str().size());
-        _assert(common.size() >= size);
-        common = common.substr(size);
-    }
-
     size_t colon(common.find(':'));
     if (colon != std::string::npos)
         common = common.substr(0, colon + 1);