mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
fix: crash on empty dialog extensions array on Windows (#48640)
This commit is contained in:
@@ -44,8 +44,7 @@ void ConvertFilters(const Filters& filters,
|
||||
std::vector<std::wstring>* buffer,
|
||||
std::vector<COMDLG_FILTERSPEC>* filterspec) {
|
||||
if (filters.empty()) {
|
||||
COMDLG_FILTERSPEC spec = {L"All Files (*.*)", L"*.*"};
|
||||
filterspec->push_back(spec);
|
||||
filterspec->push_back({L"All Files (*.*)", L"*.*"});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -55,11 +54,16 @@ void ConvertFilters(const Filters& filters,
|
||||
buffer->push_back(base::UTF8ToWide(filter.first));
|
||||
spec.pszName = buffer->back().c_str();
|
||||
|
||||
std::vector<std::string> extensions(filter.second);
|
||||
for (std::string& extension : extensions)
|
||||
extension.insert(0, "*.");
|
||||
buffer->push_back(base::UTF8ToWide(base::JoinString(extensions, ";")));
|
||||
spec.pszSpec = buffer->back().c_str();
|
||||
if (filter.second.empty()) {
|
||||
buffer->push_back(L"*.*");
|
||||
spec.pszSpec = buffer->back().c_str();
|
||||
} else {
|
||||
std::vector<std::string> extensions(filter.second);
|
||||
for (std::string& extension : extensions)
|
||||
extension.insert(0, "*.");
|
||||
buffer->push_back(base::UTF8ToWide(base::JoinString(extensions, ";")));
|
||||
spec.pszSpec = buffer->back().c_str();
|
||||
}
|
||||
|
||||
filterspec->push_back(spec);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user