Fix a potential segmentation fault.

This commit is contained in:
Jacob 2024-07-13 06:11:44 +02:00
parent e6a371bf57
commit 5a121fc062

View file

@ -112,15 +112,18 @@ void get_metadata_from_file(const Settings& settings, const std::string& format,
get_comment(),
get_extension(),
};
#ifdef _WIN32
std::vector<char> the_forbidden_characters{'<', '>', ':', '"', '/', '\\', '|', '?', '*'};
#else
std::vector<char> the_forbidden_characters{'/'};
#endif
for (const auto& it : {&data.title, &data.album, &data.artist, &data.track, &data.year, &data.genre, &data.comment, &data.extension}) {
for (const auto& c : the_forbidden_characters)
static_cast<void>(std::remove_if(it->begin(), it->end(), [&c](char _c) { return c == _c; }));
const std::vector<std::string*> data_members = {&data.title, &data.album, &data.artist, &data.track, &data.year, &data.genre, &data.comment, &data.extension};
for (const auto& it : data_members) {
for (const auto& c : the_forbidden_characters) {
it->erase(std::remove_if(it->begin(), it->end(), [&c](char _c) { return c == _c; }), it->end());
}
}
std::unordered_map<std::string, std::string> delim_map{