diff --git a/modern/src/maki-interpreter/interpreter.js b/modern/src/maki-interpreter/interpreter.js index f458e72469..af99cb6f49 100644 --- a/modern/src/maki-interpreter/interpreter.js +++ b/modern/src/maki-interpreter/interpreter.js @@ -161,11 +161,17 @@ export function* interpret(start, program, stack = []) { } const obj = popStackValue(); const ret = obj[methodName](...methodArgs); + let value; if (isPromise(ret)) { - stack.push(yield ret); + value = yield ret; } else { - stack.push(ret); + value = ret; } + if (value === null) { + // variables[1] holds global NULL value + value = variables[1]; + } + stack.push(value); break; } // callGlobal diff --git a/modern/src/maki-interpreter/variable.js b/modern/src/maki-interpreter/variable.js index 27c70a4059..b52d5481d2 100644 --- a/modern/src/maki-interpreter/variable.js +++ b/modern/src/maki-interpreter/variable.js @@ -17,7 +17,7 @@ class Variable { if (this._unsubscribeFromValue != null) { this._unsubscribeFromValue(); } - if (this.global && this.typeName === "OBJECT" && value !== null) { + if (this.global && this.typeName === "OBJECT" && value !== 0) { this._unsubscribeFromValue = value.js_listenToAll( (eventName, ...args) => { this._emitter.trigger(eventName.toLowerCase(), ...args);