Skip to content

Commit 3128de6

Browse files
fixed global Promise overwrite for thread safety
1 parent fd2703d commit 3128de6

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

NativeScript/runtime/PromiseProxy.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,27 @@ void PromiseProxy::Init(v8::Local<v8::Context> context) {
7272
});
7373
}
7474
});
75+
globalThis = new Proxy(globalThis, {
76+
defineProperty: (target, prop, descriptor) => {
77+
if (prop === 'Promise') {
78+
return true;
79+
}
80+
return Object.defineProperty(target, prop, descriptor);
81+
},
82+
set: (target, prop, value, receiver) => {
83+
if (prop === 'Promise') {
84+
return true;
85+
}
86+
87+
const descriptor = Object.getOwnPropertyDescriptor(target, prop);
88+
if (descriptor && !descriptor.writable) {
89+
return false;
90+
}
91+
92+
target[prop] = value;
93+
return true;
94+
}
95+
});
7596
})();
7697
)";
7798

0 commit comments

Comments
 (0)