From 691e3b68040187325077a4ffa8d36198dde21d8b Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Tue, 28 Jul 2020 19:39:50 +0200 Subject: [PATCH] avm1: Make FunctionObject::function_and_constructor require prototype, it's not optional --- core/src/avm1/function.rs | 4 ++-- core/src/avm1/globals.rs | 9 ++++----- core/src/avm1/globals/array.rs | 2 +- core/src/avm1/globals/boolean.rs | 2 +- core/src/avm1/globals/number.rs | 2 +- core/src/avm1/globals/string.rs | 2 +- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/core/src/avm1/function.rs b/core/src/avm1/function.rs index c160446ce..30a28bbf1 100644 --- a/core/src/avm1/function.rs +++ b/core/src/avm1/function.rs @@ -516,14 +516,14 @@ impl<'gc> FunctionObject<'gc> { function: impl Into>, constructor: impl Into>, fn_proto: Option>, - prototype: Option>, + prototype: Object<'gc>, ) -> Object<'gc> { Self::allocate_function( context, Some(function), Some(constructor), fn_proto, - prototype, + Some(prototype), ) } } diff --git a/core/src/avm1/globals.rs b/core/src/avm1/globals.rs index 4b307c462..1047d4326 100644 --- a/core/src/avm1/globals.rs +++ b/core/src/avm1/globals.rs @@ -353,7 +353,7 @@ pub fn create_globals<'gc>( Some(function_proto), Some(text_format_proto), ); - let array = array::create_array_object(gc_context, Some(array_proto), Some(function_proto)); + let array = array::create_array_object(gc_context, array_proto, Some(function_proto)); let xmlnode = FunctionObject::constructor( gc_context, Executable::Native(xml::xmlnode_constructor), @@ -366,10 +366,9 @@ pub fn create_globals<'gc>( Some(function_proto), Some(xml_proto), ); - let string = string::create_string_object(gc_context, Some(string_proto), Some(function_proto)); - let number = number::create_number_object(gc_context, Some(number_proto), Some(function_proto)); - let boolean = - boolean::create_boolean_object(gc_context, Some(boolean_proto), Some(function_proto)); + let string = string::create_string_object(gc_context, string_proto, Some(function_proto)); + let number = number::create_number_object(gc_context, number_proto, Some(function_proto)); + let boolean = boolean::create_boolean_object(gc_context, boolean_proto, Some(function_proto)); let flash = ScriptObject::object(gc_context, Some(object_proto)); let geom = ScriptObject::object(gc_context, Some(object_proto)); diff --git a/core/src/avm1/globals/array.rs b/core/src/avm1/globals/array.rs index 575351706..5926b052c 100644 --- a/core/src/avm1/globals/array.rs +++ b/core/src/avm1/globals/array.rs @@ -35,7 +35,7 @@ type CompareFn<'a, 'gc> = Box< pub fn create_array_object<'gc>( gc_context: MutationContext<'gc, '_>, - array_proto: Option>, + array_proto: Object<'gc>, fn_proto: Option>, ) -> Object<'gc> { let array = FunctionObject::function_and_constructor( diff --git a/core/src/avm1/globals/boolean.rs b/core/src/avm1/globals/boolean.rs index 54a5fb038..93f249fa3 100644 --- a/core/src/avm1/globals/boolean.rs +++ b/core/src/avm1/globals/boolean.rs @@ -50,7 +50,7 @@ pub fn boolean_function<'gc>( pub fn create_boolean_object<'gc>( gc_context: MutationContext<'gc, '_>, - boolean_proto: Option>, + boolean_proto: Object<'gc>, fn_proto: Option>, ) -> Object<'gc> { FunctionObject::function_and_constructor( diff --git a/core/src/avm1/globals/number.rs b/core/src/avm1/globals/number.rs index d44936ae0..79691722d 100644 --- a/core/src/avm1/globals/number.rs +++ b/core/src/avm1/globals/number.rs @@ -50,7 +50,7 @@ pub fn number_function<'gc>( pub fn create_number_object<'gc>( gc_context: MutationContext<'gc, '_>, - number_proto: Option>, + number_proto: Object<'gc>, fn_proto: Option>, ) -> Object<'gc> { let number = FunctionObject::function_and_constructor( diff --git a/core/src/avm1/globals/string.rs b/core/src/avm1/globals/string.rs index cd4d5a885..bc9800b4c 100644 --- a/core/src/avm1/globals/string.rs +++ b/core/src/avm1/globals/string.rs @@ -51,7 +51,7 @@ pub fn string_function<'gc>( pub fn create_string_object<'gc>( gc_context: MutationContext<'gc, '_>, - string_proto: Option>, + string_proto: Object<'gc>, fn_proto: Option>, ) -> Object<'gc> { let string = FunctionObject::function_and_constructor(