From 8b0bd4193bcad4b8e0245ba0157b00ceb5b3a21e Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Thu, 30 Oct 2025 20:28:54 +0100 Subject: [PATCH] Fix temp var save / loading not working --- lib/utils/temp-variable.cpp | 13 +++++++++++-- lib/utils/temp-variable.hpp | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/utils/temp-variable.cpp b/lib/utils/temp-variable.cpp index dedb71fb..393b9022 100644 --- a/lib/utils/temp-variable.cpp +++ b/lib/utils/temp-variable.cpp @@ -202,6 +202,8 @@ static void appendNestedMacros(std::deque> ¯os, dynamic_cast(action.get()); if (nestedMacroAction) { macros.push_back(nestedMacroAction->_nestedMacro); + appendNestedMacros( + macros, nestedMacroAction->_nestedMacro.get()); } } for (const auto &action : macro->ElseActions()) { @@ -209,6 +211,8 @@ static void appendNestedMacros(std::deque> ¯os, dynamic_cast(action.get()); if (nestedMacroAction) { macros.push_back(nestedMacroAction->_nestedMacro); + appendNestedMacros( + macros, nestedMacroAction->_nestedMacro.get()); } } } @@ -301,8 +305,13 @@ void TempVariableRef::Save(obs_data_t *obj, Macro *macro, void TempVariableRef::Load(obs_data_t *obj, Macro *macroPtr, const char *name) { + std::deque> allMacros = GetMacros(); + for (const auto &topLevelMacro : GetMacros()) { + appendNestedMacros(allMacros, topLevelMacro.get()); + } + std::weak_ptr macro; - for (const auto ¯oShared : GetMacros()) { + for (const auto ¯oShared : allMacros) { if (macroShared.get() == macroPtr) { macro = macroShared; break; @@ -340,7 +349,7 @@ void TempVariableRef::PostLoad(int idx, SegmentType type, return; } - Macro *macro = nullptr; + auto macro = childMacro.get(); for (int i = 0; i < _depth; i++) { macro = getParentMacro(childMacro.get()); } diff --git a/lib/utils/temp-variable.hpp b/lib/utils/temp-variable.hpp index 43b0fccc..b404d576 100644 --- a/lib/utils/temp-variable.hpp +++ b/lib/utils/temp-variable.hpp @@ -75,7 +75,7 @@ private: void PostLoad(int idx, SegmentType, const std::weak_ptr &); std::string _id = ""; - std::weak_ptr _segment; + std::weak_ptr _segment = {}; int _depth = 0; friend TempVariable;