Skip to content

Commit 244c004

Browse files
authored
Merge pull request #1031 from markterm/fix-script-reload-race-condition
Fix race condition in script reload causing null pointer crash
2 parents 9a07387 + 3575b51 commit 244c004

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/nodes/scriptnode.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ Result ScriptNode::loadScript (const String& newCode)
123123
if (result.failed())
124124
return result;
125125

126+
ScopedLock sl (lock); // Lock EVERYTHING
127+
126128
ScriptLoader loader (lua);
127129
loader.load (newCode);
128130
if (loader.hasError())
@@ -133,18 +135,14 @@ Result ScriptNode::loadScript (const String& newCode)
133135
return Result::fail ("Could not instantiate script");
134136

135137
auto newScript = std::make_unique<DSPScript> (dsp);
138+
newScript->setPlayHead (getPlayHead());
139+
if (prepared)
140+
newScript->prepare (sampleRate, blockSize);
141+
triggerPortReset();
136142

137-
if (true)
138-
{
139-
newScript->setPlayHead (getPlayHead());
140-
if (prepared)
141-
newScript->prepare (sampleRate, blockSize);
142-
triggerPortReset();
143-
ScopedLock sl (lock);
144-
if (script != nullptr)
145-
newScript->copyParameterValues (*script);
146-
script.swap (newScript);
147-
}
143+
if (script != nullptr)
144+
newScript->copyParameterValues (*script);
145+
script.swap (newScript);
148146

149147
if (newScript != nullptr)
150148
{

0 commit comments

Comments
 (0)