File tree 2 files changed +13
-3
lines changed
2 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -1216,9 +1216,18 @@ RegisteredPointer.prototype['fromWireType'] = function fromWireType(ptr) {
1216
1216
1217
1217
var registeredInstance = getInheritedInstance ( this . registeredClass , rawPointer ) ;
1218
1218
if ( undefined !== registeredInstance ) {
1219
- var rv = registeredInstance [ 'clone' ] ( ) ;
1220
- this . destructor ( ptr ) ;
1221
- return rv ;
1219
+ // JS object has been neutered, time to repopulate it
1220
+ if ( 0 === registeredInstance . $$ . count . value ) {
1221
+ registeredInstance . $$ . ptr = rawPointer ;
1222
+ registeredInstance . $$ . smartPtr = ptr ;
1223
+ return registeredInstance [ 'clone' ] ( ) ;
1224
+ } else {
1225
+ // else, just increment reference count on existing object
1226
+ // it already has a reference to the smart pointer
1227
+ var rv = registeredInstance [ 'clone' ] ( ) ;
1228
+ this . destructor ( ptr ) ;
1229
+ return rv ;
1230
+ }
1222
1231
}
1223
1232
1224
1233
function makeDefaultHandle ( ) {
Original file line number Diff line number Diff line change @@ -2410,6 +2410,7 @@ module({
2410
2410
var back = holder . get ( ) ;
2411
2411
assert . equal ( back , instance ) ;
2412
2412
holder . delete ( ) ;
2413
+ back . delete ( ) ;
2413
2414
} ) ;
2414
2415
} ) ;
2415
2416
You can’t perform that action at this time.
0 commit comments