diff --git a/src/pyproxy.c b/src/pyproxy.c index 1305a67aa..91a1ef9a8 100644 --- a/src/pyproxy.c +++ b/src/pyproxy.c @@ -157,6 +157,7 @@ EM_JS(int, pyproxy_init, (), { return result; }, get: function (jsobj, jskey) { + ptrobj = this.getPtr(jsobj); if (jskey === 'toString') { return function() { if (self.pyodide.repr === undefined) { @@ -169,8 +170,16 @@ EM_JS(int, pyproxy_init, (), { } else if (jskey === 'destroy') { __pyproxy_destroy(this.getPtr(jsobj)); jsobj['$$']['ptr'] = null; + } else if (jskey == 'apply') { + return function(jsthis, jsargs) { + var idargs = Module.hiwire_new_value(jsargs); + var idresult = __pyproxy_apply(ptrobj, idargs); + var jsresult = Module.hiwire_get_value(idresult); + Module.hiwire_decref(idresult); + Module.hiwire_decref(idargs); + return jsresult; + }; } - ptrobj = this.getPtr(jsobj); var idkey = Module.hiwire_new_value(jskey); var idresult = __pyproxy_get(ptrobj, idkey); var jsresult = Module.hiwire_get_value(idresult);