From 11571751b97fc24cb9c6dd3ddbefe0fb3555282b Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Tue, 3 Jan 2023 00:03:06 +0100 Subject: [PATCH] Fix crash related to highlights A crash could occur when macro segments would be deleted while highlighting of a segment was triggered. --- src/macro-core/macro-action-edit.cpp | 4 ++-- src/macro-core/macro-action-edit.hpp | 2 +- src/macro-core/macro-condition-edit.cpp | 4 ++-- src/macro-core/macro-condition-edit.hpp | 2 +- src/macro-core/macro-segment.hpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/macro-core/macro-action-edit.cpp b/src/macro-core/macro-action-edit.cpp index 2261936f..06bce2f3 100644 --- a/src/macro-core/macro-action-edit.cpp +++ b/src/macro-core/macro-action-edit.cpp @@ -147,9 +147,9 @@ void MacroActionEdit::SetEntryData(std::shared_ptr *data) _entryData = data; } -MacroSegment *MacroActionEdit::Data() +std::shared_ptr MacroActionEdit::Data() { - return _entryData->get(); + return *_entryData; } void AdvSceneSwitcher::AddMacroAction(int idx) diff --git a/src/macro-core/macro-action-edit.hpp b/src/macro-core/macro-action-edit.hpp index bfb838db..57016ba6 100644 --- a/src/macro-core/macro-action-edit.hpp +++ b/src/macro-core/macro-action-edit.hpp @@ -44,7 +44,7 @@ private slots: void ActionSelectionChanged(const QString &text); private: - MacroSegment *Data(); + std::shared_ptr Data(); QComboBox *_actionSelection; diff --git a/src/macro-core/macro-condition-edit.cpp b/src/macro-core/macro-condition-edit.cpp index 65fce0c8..3806cb06 100644 --- a/src/macro-core/macro-condition-edit.cpp +++ b/src/macro-core/macro-condition-edit.cpp @@ -354,9 +354,9 @@ void MacroConditionEdit::DurationUnitChanged(DurationUnit unit) (*_entryData)->SetDurationUnit(unit); } -MacroSegment *MacroConditionEdit::Data() +std::shared_ptr MacroConditionEdit::Data() { - return _entryData->get(); + return *_entryData; } void AdvSceneSwitcher::AddMacroCondition(int idx) diff --git a/src/macro-core/macro-condition-edit.hpp b/src/macro-core/macro-condition-edit.hpp index 5ad33ae5..a5c91299 100644 --- a/src/macro-core/macro-condition-edit.hpp +++ b/src/macro-core/macro-condition-edit.hpp @@ -75,7 +75,7 @@ private slots: private: void SetLogicSelection(); - MacroSegment *Data(); + std::shared_ptr Data(); QComboBox *_logicSelection; QComboBox *_conditionSelection; diff --git a/src/macro-core/macro-segment.hpp b/src/macro-core/macro-segment.hpp index e00e5cfd..da5b908f 100644 --- a/src/macro-core/macro-segment.hpp +++ b/src/macro-core/macro-segment.hpp @@ -73,7 +73,7 @@ private: BELOW, }; - virtual MacroSegment *Data() = 0; + virtual std::shared_ptr Data() = 0; void ShowDropLine(DropLineState); // The reason for using two separate frame widget each with their own