mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
fix: Make sure PerProvider don't get accessed using a nullptr provider
This commit is contained in:
@@ -38,18 +38,30 @@ namespace hex {
|
||||
}
|
||||
|
||||
T& get(const prv::Provider *provider = ImHexApi::Provider::get()) {
|
||||
if (provider == nullptr) [[unlikely]]
|
||||
throw std::invalid_argument("PerProvider::get called with nullptr");
|
||||
|
||||
return m_data[provider];
|
||||
}
|
||||
|
||||
const T& get(const prv::Provider *provider = ImHexApi::Provider::get()) const {
|
||||
if (provider == nullptr) [[unlikely]]
|
||||
throw std::invalid_argument("PerProvider::get called with nullptr");
|
||||
|
||||
return m_data.at(provider);
|
||||
}
|
||||
|
||||
void set(const T &data, const prv::Provider *provider = ImHexApi::Provider::get()) {
|
||||
if (provider == nullptr) [[unlikely]]
|
||||
throw std::invalid_argument("PerProvider::set called with nullptr");
|
||||
|
||||
m_data[provider] = data;
|
||||
}
|
||||
|
||||
void set(T &&data, const prv::Provider *provider = ImHexApi::Provider::get()) {
|
||||
if (provider == nullptr) [[unlikely]]
|
||||
throw std::invalid_argument("PerProvider::set called with nullptr");
|
||||
|
||||
m_data[provider] = std::move(data);
|
||||
}
|
||||
|
||||
|
||||
@@ -1090,8 +1090,12 @@ namespace hex::plugin::builtin {
|
||||
});
|
||||
|
||||
EventHighlightingChanged::subscribe(this, [this]{
|
||||
m_foregroundHighlights->clear();
|
||||
m_backgroundHighlights->clear();
|
||||
auto provider = ImHexApi::Provider::get();
|
||||
if (provider == nullptr)
|
||||
return;
|
||||
|
||||
m_foregroundHighlights.get(provider).clear();
|
||||
m_backgroundHighlights.get(provider).clear();
|
||||
});
|
||||
|
||||
ProjectFile::registerPerProviderHandler({
|
||||
|
||||
@@ -168,7 +168,6 @@ namespace hex::plugin::builtin {
|
||||
});
|
||||
|
||||
// Initialize the selected rule iterators to point to the end of the rules lists
|
||||
m_selectedRule = m_rules->end();
|
||||
EventProviderOpened::subscribe([this](prv::Provider *provider) {
|
||||
m_selectedRule.get(provider) = m_rules.get(provider).end();
|
||||
});
|
||||
|
||||
@@ -1462,6 +1462,8 @@ namespace hex::plugin::builtin {
|
||||
|
||||
void ViewPatternEditor::drawAlwaysVisibleContent() {
|
||||
auto provider = ImHexApi::Provider::get();
|
||||
if (provider == nullptr)
|
||||
return;
|
||||
|
||||
auto open = m_sectionWindowDrawer.contains(provider);
|
||||
if (open) {
|
||||
|
||||
Reference in New Issue
Block a user