Browse Source

Merge branch 'ctest_update-memory-problems' into release-3.11

Merge-request: !1893
Brad King 7 years ago
parent
commit
36881ee416
2 changed files with 10 additions and 7 deletions
  1. 3 1
      Source/CTest/cmCTestSVN.h
  2. 7 6
      Source/cmSystemTools.cxx

+ 3 - 1
Source/CTest/cmCTestSVN.h

@@ -8,6 +8,7 @@
 #include "cmCTestGlobalVC.h"
 
 #include <iosfwd>
+#include <list>
 #include <string>
 #include <vector>
 
@@ -70,7 +71,8 @@ private:
   friend struct Revision;
 
   // Info of all the repositories (root, externals and nested ones).
-  std::vector<SVNInfo> Repositories;
+  // Use std::list so the elements don't move in memory.
+  std::list<SVNInfo> Repositories;
 
   // Pointer to the infos of the root repository.
   SVNInfo* RootInfo;

+ 7 - 6
Source/cmSystemTools.cxx

@@ -550,12 +550,13 @@ std::vector<std::string> cmSystemTools::ParseArguments(const char* command)
 
   bool win_path = false;
 
-  if ((command[0] != '/' && command[1] == ':' && command[2] == '\\') ||
-      (command[0] == '\"' && command[1] != '/' && command[2] == ':' &&
-       command[3] == '\\') ||
-      (command[0] == '\'' && command[1] != '/' && command[2] == ':' &&
-       command[3] == '\\') ||
-      (command[0] == '\\' && command[1] == '\\')) {
+  if (command[0] && command[1] &&
+      ((command[0] != '/' && command[1] == ':' && command[2] == '\\') ||
+       (command[0] == '\"' && command[1] != '/' && command[2] == ':' &&
+        command[3] == '\\') ||
+       (command[0] == '\'' && command[1] != '/' && command[2] == ':' &&
+        command[3] == '\\') ||
+       (command[0] == '\\' && command[1] == '\\'))) {
     win_path = true;
   }
   // Split the command into an argv array.