File tree Expand file tree Collapse file tree 4 files changed +25
-2
lines changed
tests/tests/swfs/avm1/object_resolve Expand file tree Collapse file tree 4 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -452,8 +452,10 @@ pub fn find_resolve_method<'gc>(
452452 return Err ( Error :: PrototypeRecursionLimit ) ;
453453 }
454454
455- if let Some ( value) = p. get_local_stored ( istr ! ( "__resolve" ) , activation, false ) {
456- return Ok ( Some ( value. coerce_to_object ( activation) ) ) ;
455+ let resolve = p. get_local_stored ( istr ! ( "__resolve" ) , activation, false ) ;
456+ // FP completely skips over primitives (but not over non-function objects).
457+ if let Some ( Value :: Object ( value) ) = resolve {
458+ return Ok ( Some ( value) ) ;
457459 }
458460
459461 proto = p. proto ( activation) ;
Original file line number Diff line number Diff line change @@ -54,6 +54,18 @@ class Test {
5454
5555 trace ("" );
5656
57+ trace ("// object.__resolve = 42" );
58+ object. __resolve = 42 ;
59+ trace ("object.object: " + object. object);
60+ trace ("// object.__resolve = _root" );
61+ object. __resolve = _root ;
62+ trace ("object.object: " + object. object);
63+ trace ("// object.__resolve = {}" );
64+ object. __resolve = {};
65+ trace ("object.object: " + object. object);
66+
67+ trace ("" );
68+
5769 object = {};
5870 object. addProperty("__resolve" , function () {return function () {return "resolved!" ; }}, null );
5971 trace ("object.foo with an addProperty __resolve: " + object. foo);
Original file line number Diff line number Diff line change @@ -26,4 +26,13 @@ object.function: [type Function]
2626object.function(): undefined
2727object.hasOwnProperty("function"): false
2828
29+ // object.__resolve = 42
30+ // Proto.prototype.__resolve function called!
31+ object.object: [object Object]
32+ // object.__resolve = _root
33+ // Proto.prototype.__resolve function called!
34+ object.object: [object Object]
35+ // object.__resolve = {}
36+ object.object: undefined
37+
2938object.foo with an addProperty __resolve: undefined
You can’t perform that action at this time.
0 commit comments