From a8fb1c2b166553d8ca0a97e4193b8024dfb6040c Mon Sep 17 00:00:00 2001 From: Adrian Wielgosik Date: Fri, 17 Dec 2021 19:53:59 +0100 Subject: [PATCH] avm2: pass Multiname to resolve_type() by reference --- core/src/avm2/activation.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/src/avm2/activation.rs b/core/src/avm2/activation.rs index 7cde69ec9..e9f563d5f 100644 --- a/core/src/avm2/activation.rs +++ b/core/src/avm2/activation.rs @@ -244,14 +244,14 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { /// typed named is not a class object. fn resolve_type( &mut self, - type_name: Multiname<'gc>, + type_name: &Multiname<'gc>, ) -> Result>, Error> { if type_name.is_any() { return Ok(None); } let class = self - .resolve_definition(&type_name)? + .resolve_definition(type_name)? .ok_or_else(|| format!("Could not resolve parameter type {:?}", type_name))? .coerce_to_object(self)?; @@ -266,7 +266,7 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { let mut param_types = Vec::with_capacity(type_name.params().len()); for param in type_name.params() { - param_types.push(match self.resolve_type(param.clone())? { + param_types.push(match self.resolve_type(param)? { Some(o) => Value::Object(o.into()), None => Value::Null, }); @@ -305,8 +305,7 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { .into()); }; - let type_name = param_config.param_type_name.clone(); - let param_type = self.resolve_type(type_name)?; + let param_type = self.resolve_type(¶m_config.param_type_name)?; if let Some(param_type) = param_type { arg.coerce_to_type(self, param_type) @@ -2739,7 +2738,7 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { ) -> Result, Error> { let val = self.context.avm2.pop(); let type_name = self.pool_multiname_static_any(method, index)?; - let param_type = self.resolve_type(type_name)?; + let param_type = self.resolve_type(&type_name)?; let x = if let Some(param_type) = param_type { val.coerce_to_type(self, param_type)?