diff options
author | Chad Austin <chad@imvu.com> | 2013-03-06 19:24:39 -0800 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:25:05 +0300 |
commit | 2d45bdd07e5c45be824f42c715097341565cc8f3 (patch) | |
tree | f3a37d20ee733544315cc601c2bdd0bdeb6bb4ff /src | |
parent | 4f18c7eed89ad5f6b77c153f82618c8fe918c3c8 (diff) |
fix pointer adjustments in property access
Diffstat (limited to 'src')
-rwxr-xr-x | src/embind/embind.js | 18 |
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 |