#include "Args.hpp"
#include <string>
+#include <vector>
// This class holds meta-information derived from the compiler arguments.
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;
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;
}
}
// 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);
}
}