]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
C++-ify ArgsInfo::sanitize_blacklists
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 2 May 2020 07:15:53 +0000 (09:15 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 5 May 2020 18:25:58 +0000 (20:25 +0200)
src/ArgsInfo.hpp
src/argprocessing.cpp
src/ccache.cpp

index 9b85fbe469e37dd4595903618879e1dc1bfc6b0b..19d76c6b0fe2dbfe827493d2c0cd0c8fd807ba78 100644 (file)
@@ -23,6 +23,7 @@
 #include "Args.hpp"
 
 #include <string>
+#include <vector>
 
 // This class holds meta-information derived from the compiler arguments.
 struct ArgsInfo
@@ -90,9 +91,8 @@ struct ArgsInfo
   // clang's -include-pch or -include-pth).
   bool using_precompiled_header = false;
 
-  // Sanitize blacklist
-  char** sanitize_blacklists = nullptr;
-  size_t sanitize_blacklists_len = 0;
+  // Files referenced by -fsanitize-blacklist options.
+  std::vector<std::string> sanitize_blacklists;
 
   // Array for storing -arch options.
   static constexpr int max_arch_args = 10;
index b07fa86434b666e2917881b151b90d0b0d265d6b..934ea7c60d2dfdc8388015c57d182c457f4ea94f 100644 (file)
@@ -563,11 +563,7 @@ process_arg(Context& ctx,
     return nullopt;
   }
   if (str_startswith(argv[i], "-fsanitize-blacklist=")) {
-    args_info.sanitize_blacklists = static_cast<char**>(
-      x_realloc(args_info.sanitize_blacklists,
-                (args_info.sanitize_blacklists_len + 1) * sizeof(char*)));
-    args_info.sanitize_blacklists[args_info.sanitize_blacklists_len++] =
-      x_strdup(argv[i] + 21);
+    args_info.sanitize_blacklists.emplace_back(argv[i] + 21);
     args_add(state.common_args, argv[i]);
     return nullopt;
   }
index ecc44e3e1830f54dea0a9ef03308398f339c50d7..4afc16f7c3817e6935959812ab5b1020f6e93c6b 100644 (file)
@@ -1518,11 +1518,10 @@ hash_common_info(const Context& ctx,
   }
 
   // Possibly hash the sanitize blacklist file path.
-  for (size_t i = 0; i < args_info.sanitize_blacklists_len; i++) {
-    char* sanitize_blacklist = args_info.sanitize_blacklists[i];
-    cc_log("Hashing sanitize blacklist %s", sanitize_blacklist);
+  for (const auto& sanitize_blacklist : args_info.sanitize_blacklists) {
+    cc_log("Hashing sanitize blacklist %s", sanitize_blacklist.c_str());
     hash_delimiter(hash, "sanitizeblacklist");
-    if (!hash_file(hash, sanitize_blacklist)) {
+    if (!hash_file(hash, sanitize_blacklist.c_str())) {
       failed(STATS_BADEXTRAFILE);
     }
   }