Browse Source

libuv wraps: Dispose of JS object on close()

v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
1261b17129
  1. 9
      src/tcp_wrap.cc
  2. 9
      src/timer_wrap.cc

9
src/tcp_wrap.cc

@ -97,9 +97,7 @@ class TCPWrap {
}
~TCPWrap() {
assert(!object_.IsEmpty());
object_->SetPointerInInternalField(0, NULL);
object_.Dispose();
assert(object_.IsEmpty());
}
// Free the C++ object on the close callback.
@ -182,6 +180,11 @@ class TCPWrap {
if (r) SetErrno(uv_last_error().code);
assert(!wrap->object_.IsEmpty());
wrap->object_->SetPointerInInternalField(0, NULL);
wrap->object_.Dispose();
wrap->object_.Clear();
return scope.Close(Integer::New(r));
}

9
src/timer_wrap.cc

@ -102,9 +102,7 @@ class TimerWrap {
~TimerWrap() {
if (!active_) uv_ref();
assert(!object_.IsEmpty());
object_->SetPointerInInternalField(0, NULL);
object_.Dispose();
assert(object_.IsEmpty());
}
void StateChange() {
@ -210,6 +208,11 @@ class TimerWrap {
wrap->StateChange();
assert(!wrap->object_.IsEmpty());
wrap->object_->SetPointerInInternalField(0, NULL);
wrap->object_.Dispose();
wrap->object_.Clear();
return scope.Close(Integer::New(r));
}

Loading…
Cancel
Save