aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-03-06 19:24:39 -0800
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:25:05 +0300
commit2d45bdd07e5c45be824f42c715097341565cc8f3 (patch)
treef3a37d20ee733544315cc601c2bdd0bdeb6bb4ff /src
parent4f18c7eed89ad5f6b77c153f82618c8fe918c3c8 (diff)
fix pointer adjustments in property access
Diffstat (limited to 'src')
-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