aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/embind/embind.js18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js
index 696b0c98..ea56097f 100755
--- a/src/embind/embind.js
+++ b/src/embind/embind.js
@@ -962,14 +962,28 @@ function __embind_register_class_field(
if (!this.$$.ptr) {
throwBindingError('cannot access emscripten binding field ' + humanName + ' on deleted object');
}
- return fieldType.fromWireType(getter(this.$$.ptr, memberPointer));
+
+ // TODO: error if pointer type doesn't match signature
+ var ptr = upcastPointer(
+ this.$$.ptr,
+ this.$$.pointeeType.registeredClass,
+ classType.registeredClass);
+
+ return fieldType.fromWireType(getter(ptr, memberPointer));
},
set: function(v) {
if (!this.$$.ptr) {
throwBindingError('cannot modify emscripten binding field ' + humanName + ' on deleted object');
}
+
+ // TODO: error if pointer type doesn't match signature
+ var ptr = upcastPointer(
+ this.$$.ptr,
+ this.$$.pointeeType.registeredClass,
+ classType.registeredClass);
+
var destructors = [];
- setter(this.$$.ptr, memberPointer, fieldType.toWireType(destructors, v));
+ setter(ptr, memberPointer, fieldType.toWireType(destructors, v));
runDestructors(destructors);
},
enumerable: true