diff --git a/src/blocks/scratch3_event.js b/src/blocks/scratch3_event.js index ae105c6b5..10ceb10cc 100644 --- a/src/blocks/scratch3_event.js +++ b/src/blocks/scratch3_event.js @@ -90,10 +90,12 @@ class Scratch3EventBlocks { } broadcastAndWait (args, util) { - const broadcastVar = util.runtime.getTargetForStage().lookupBroadcastMsg( - args.BROADCAST_OPTION.id, args.BROADCAST_OPTION.name); - if (broadcastVar) { - const broadcastOption = broadcastVar.name; + if (!util.stackFrame.broadcastVar) { + util.stackFrame.broadcastVar = util.runtime.getTargetForStage().lookupBroadcastMsg( + args.BROADCAST_OPTION.id, args.BROADCAST_OPTION.name); + } + if (util.stackFrame.broadcastVar) { + const broadcastOption = util.stackFrame.broadcastVar.name; // Have we run before, starting threads? if (!util.stackFrame.startedThreads) { // No - start hats for this broadcast. diff --git a/test/fixtures/execute/broadcast-wait-arg-change.sb2 b/test/fixtures/execute/broadcast-wait-arg-change.sb2 new file mode 100644 index 000000000..73e8d8f93 Binary files /dev/null and b/test/fixtures/execute/broadcast-wait-arg-change.sb2 differ