From 73189b6449c912326e886a821288021f2d2ac9dc Mon Sep 17 00:00:00 2001 From: David Wendt Date: Thu, 5 Mar 2020 21:12:54 -0500 Subject: [PATCH] Properly unwind errors thrown from the AVM2 reader. --- core/src/avm2.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/avm2.rs b/core/src/avm2.rs index f715fe91e..f1b990fae 100644 --- a/core/src/avm2.rs +++ b/core/src/avm2.rs @@ -423,7 +423,8 @@ impl<'gc> Avm2<'gc> { context: &mut UpdateContext<'_, 'gc, '_>, reader: &mut Reader>, ) -> Result<(), Error> { - if let Some(op) = reader.read_op()? { + let op = reader.read_op(); + if let Ok(Some(op)) = op { avm_debug!("Opcode: {:?}", op); let result = match op { @@ -511,6 +512,14 @@ impl<'gc> Avm2<'gc> { self.unwind_stack_frame(); return result; } + } else if let Ok(None) = op { + log::error!("Unknown opcode!"); + self.unwind_stack_frame(); + return Err("Unknown opcode!".into()); + } else if let Err(e) = op { + log::error!("Parse error: {:?}", e); + self.unwind_stack_frame(); + return Err(e.into()); } Ok(())