aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/embind/embind.js12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js
index 277515a5..5a0699ba 100755
--- a/src/embind/embind.js
+++ b/src/embind/embind.js
@@ -788,10 +788,13 @@ function __embind_register_class_constructor(
rawClassType,
argCount,
rawArgTypesAddr,
+ invoker,
rawConstructor
) {
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
- rawConstructor = FUNCTION_TABLE[rawConstructor];
+ invoker = FUNCTION_TABLE[invoker];
+ rawConstructor = rawConstructor;
+
requestDeferredRegistration(function() {
var classType = requireRegisteredType(rawClassType, 'class');
var humanName = 'constructor ' + classType.name;
@@ -801,12 +804,13 @@ function __embind_register_class_constructor(
throw new BindingError('emscripten binding ' + humanName + ' called with ' + arguments.length + ' arguments, expected ' + (argCount-1));
}
var destructors = [];
- var args = new Array(argCount - 1);
+ var args = new Array(argCount);
+ args[0] = rawConstructor;
for (var i = 1; i < argCount; ++i) {
- args[i - 1] = argTypes[i].toWireType(destructors, arguments[i - 1]);
+ args[i] = argTypes[i].toWireType(destructors, arguments[i - 1]);
}
- var ptr = rawConstructor.apply(null, args);
+ var ptr = invoker.apply(null, args);
runDestructors(destructors);
return classType.Handle.call(this, ptr);