Przeglądaj źródła

cmListCommand: prefer strtol to atoi

This allows for detecting errors.
Ben Boeckel 4 lat temu
rodzic
commit
1f1fdff7fa
1 zmienionych plików z 8 dodań i 4 usunięć
  1. 8 4
      Source/cmListCommand.cxx

+ 8 - 4
Source/cmListCommand.cxx

@@ -4,9 +4,7 @@
 
 #include <algorithm>
 #include <cassert>
-#include <cstddef>
 #include <cstdio>
-#include <cstdlib> // required for atoi
 #include <functional>
 #include <iterator>
 #include <set>
@@ -38,8 +36,14 @@ namespace {
 
 bool GetIndexArg(char const* arg, int* idx)
 {
-  *idx = atoi(arg);
-  // Ignore errors.
+  long value;
+  if (!cmStrToLong(arg, &value)) {
+    // An error was detected.
+  }
+
+  // Truncation is happening here, but it had always been happening here.
+  *idx = static_cast<int>(value);
+
   return true;
 }