From 366e8aa926f56c0cda806c5a8f06965badb7bbb7 Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Fri, 25 Sep 2020 04:16:20 -0700 Subject: [PATCH] Array: Fix Array single-param ctor The Array constructor with a single param sets the length if the parameter is a number (no coercion is done); otherwise, it is creates an 1-length Array containing the parameter. Previously we coerced the parameter to a float. --- core/src/avm1/globals/array.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/avm1/globals/array.rs b/core/src/avm1/globals/array.rs index f58c852b3..ae6f9c9d4 100644 --- a/core/src/avm1/globals/array.rs +++ b/core/src/avm1/globals/array.rs @@ -91,7 +91,7 @@ pub fn constructor<'gc>( if args.len() == 1 { let arg = args.get(0).unwrap(); - if let Ok(length) = arg.coerce_to_f64(activation) { + if let Value::Number(length) = *arg { if length >= 0.0 { this.set_length(activation.context.gc_context, length as usize); consumed = true; @@ -124,7 +124,7 @@ pub fn array_function<'gc>( if args.len() == 1 { let arg = args.get(0).unwrap(); - if let Ok(length) = arg.coerce_to_f64(activation) { + if let Value::Number(length) = *arg { if length >= 0.0 { array_obj.set_length(activation.context.gc_context, length as usize); consumed = true;