summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChad Austin <chad@chadaustin.me>2012-11-01 18:22:36 -0700
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:21:29 +0300
commiteb5226e16cca6df5c4c889213150970dc9c6d5c3 (patch)
tree526921c3d0833118d8cea04399a6167734e53670 /src
parent3703d2b5cdf66f7ef0ce6f56a54856102e4a1cfd (diff)
Class static methods were downright broken.
Diffstat (limited to 'src')
-rw-r--r--src/embind/embind.js14
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;
};