diff options
author | Chad Austin <chad@chadaustin.me> | 2012-11-01 18:22:36 -0700 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:21:29 +0300 |
commit | eb5226e16cca6df5c4c889213150970dc9c6d5c3 (patch) | |
tree | 526921c3d0833118d8cea04399a6167734e53670 /src | |
parent | 3703d2b5cdf66f7ef0ce6f56a54856102e4a1cfd (diff) |
Class static methods were downright broken.
Diffstat (limited to 'src')
-rw-r--r-- | src/embind/embind.js | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index e0868838..ef1851e1 100644 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -566,27 +566,29 @@ function __embind_register_class_classmethod( returnType, argCount, argTypes, - method + invoker, + fn ) { classType = requireRegisteredType(classType, 'class'); methodName = Pointer_stringify(methodName); var humanName = classType.name + '.' + methodName; returnType = requireRegisteredType(returnType, 'classmethod ' + humanName + ' return value'); argTypes = requireArgumentTypes(argCount, argTypes, 'classmethod ' + humanName); - method = FUNCTION_TABLE[method]; + invoker = FUNCTION_TABLE[invoker]; classType.constructor[methodName] = function() { if (arguments.length !== argCount) { - throw new BindingError('emscripten binding method ' + humanName + ' called with ' + arguments.length + ' arguments, expected ' + argCount); + throw new BindingError('emscripten binding class method ' + humanName + ' called with ' + arguments.length + ' arguments, expected ' + argCount); } var destructors = []; - var args = new Array(argCount); + var args = new Array(argCount + 1); + args[0] = fn; for (var i = 0; i < argCount; ++i) { - args[i] = argTypes[i].toWireType(destructors, arguments[i]); + args[i + 1] = argTypes[i].toWireType(destructors, arguments[i]); } - var rv = returnType.fromWireType(method.apply(null, args)); + var rv = returnType.fromWireType(invoker.apply(null, args)); runDestructors(destructors); return rv; }; |