diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-05-28 18:05:37 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-05-28 18:05:37 -0700 |
commit | 975882c00450475dc9102c65f5ac6fcb88b9125b (patch) | |
tree | 4f766f49fd9eb15024b09d8de87085b6d7aab0de /src | |
parent | 504b62384aba8da8258ed6f8ba0a455a1db7736a (diff) | |
parent | 34599322eea3c9d2240c1c09d0f148f95612ed5a (diff) |
Merge pull request #2388 from waywardmonkeys/upstream-from-imvu
Upstream from imvu
Diffstat (limited to 'src')
-rw-r--r-- | src/embind/embind.js | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index 124ea569..8c8d73ad 100644 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -1216,9 +1216,18 @@ RegisteredPointer.prototype['fromWireType'] = function fromWireType(ptr) { var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); if (undefined !== registeredInstance) { - var rv = registeredInstance['clone'](); - this.destructor(ptr); - return rv; + // JS object has been neutered, time to repopulate it + if (0 === registeredInstance.$$.count.value) { + registeredInstance.$$.ptr = rawPointer; + registeredInstance.$$.smartPtr = ptr; + return registeredInstance['clone'](); + } else { + // else, just increment reference count on existing object + // it already has a reference to the smart pointer + var rv = registeredInstance['clone'](); + this.destructor(ptr); + return rv; + } } function makeDefaultHandle() { |