handle_wrap: guard against uninitialized handle or double close

pull/5370/head
Ben Noordhuis 2012-01-09 20:39:06 +01:00
parent cc5cea35b0
commit d5d043f2d7
1 changed files with 6 additions and 1 deletions

View File

@ -99,9 +99,11 @@ Handle<Value> HandleWrap::Close(const Arguments& args) {
UNWRAP
// guard against uninitialized handle or double close
if (wrap->handle__ == NULL) return v8::Null();
assert(!wrap->object_.IsEmpty());
uv_close(wrap->handle__, OnClose);
wrap->handle__ = NULL;
HandleWrap::Ref(args);
@ -143,6 +145,9 @@ void HandleWrap::OnClose(uv_handle_t* handle) {
// The wrap object should still be there.
assert(wrap->object_.IsEmpty() == false);
// But the handle pointer should be gone.
assert(wrap->handle__ == NULL);
wrap->object_->SetPointerInInternalField(0, NULL);
wrap->object_.Dispose();
wrap->object_.Clear();