Skip to content

Commit ed06b62

Browse files
committed
more fallback
1 parent bb446e7 commit ed06b62

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

rhino/src/main/java/org/mozilla/javascript/FunctionObject.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ public class FunctionObject extends BaseFunction {
8080
* @see org.mozilla.javascript.Scriptable
8181
*/
8282
public FunctionObject(String name, Member methodOrConstructor, Scriptable scope) {
83-
var typeInfoFactory = TypeInfoFactory.get(scope);
83+
// fallback to global factory for compatibility with old behaviour, where the `scope` can be
84+
// an object not yet initialized via `initStandardObject(...)`
85+
var typeInfoFactory = TypeInfoFactory.getOrElse(scope, TypeInfoFactory.GLOBAL);
8486

8587
if (methodOrConstructor instanceof Constructor) {
8688
member = new MemberBox((Constructor<?>) methodOrConstructor, typeInfoFactory);

rhino/src/main/java/org/mozilla/javascript/ScriptableObject.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,10 +1499,11 @@ public void defineProperty(String propertyName, Class<?> clazz, int attributes)
14991499
*/
15001500
public void defineProperty(
15011501
String propertyName, Object delegateTo, Method getter, Method setter, int attributes) {
1502+
var typeFactory = TypeInfoFactory.getOrElse(this, TypeInfoFactory.GLOBAL);
1503+
15021504
MemberBox getterBox = null;
15031505
if (getter != null) {
1504-
getterBox =
1505-
new MemberBox(getter, TypeInfoFactory.getOrElse(this, TypeInfoFactory.GLOBAL));
1506+
getterBox = new MemberBox(getter, typeFactory);
15061507

15071508
boolean delegatedForm;
15081509
if (!Modifier.isStatic(getter.getModifiers())) {
@@ -1543,7 +1544,7 @@ public void defineProperty(
15431544
if (setter.getReturnType() != Void.TYPE)
15441545
throw Context.reportRuntimeErrorById("msg.setter.return", setter.toString());
15451546

1546-
setterBox = new MemberBox(setter, TypeInfoFactory.get(this));
1547+
setterBox = new MemberBox(setter, typeFactory);
15471548

15481549
boolean delegatedForm;
15491550
if (!Modifier.isStatic(setter.getModifiers())) {

0 commit comments

Comments
 (0)