From 17cd31dce333f7dce3c4ce52f0e6dfc01e6067c5 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 12 Mar 2019 17:11:40 -0400 Subject: [PATCH] Fix #332: Make pyproxy.apply work --- src/pyproxy.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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);