diff --git a/src/blocks/scratch3_procedures.js b/src/blocks/scratch3_procedures.js index c648d9603..b91630f12 100644 --- a/src/blocks/scratch3_procedures.js +++ b/src/blocks/scratch3_procedures.js @@ -27,11 +27,20 @@ class Scratch3ProcedureBlocks { if (!util.stackFrame.executed) { const procedureCode = args.mutation.proccode; const paramNames = util.getProcedureParamNames(procedureCode); + + // If null, procedure could not be found, which can happen if custom + // block is dragged between sprites without the definition. + // Match Scratch 2.0 behavior and noop. + if (paramNames === null) { + return; + } + for (let i = 0; i < paramNames.length; i++) { if (args.hasOwnProperty(`input${i}`)) { util.pushParam(paramNames[i], args[`input${i}`]); } } + util.stackFrame.executed = true; util.startProcedure(procedureCode); }