Permalink
Browse files

handle_wrap: guard against uninitialized handle or double close

  • Loading branch information...
1 parent cc5cea3 commit d5d043f2d72e88669e2e3621651153316831034e @bnoordhuis bnoordhuis committed Jan 9, 2012
Showing with 6 additions and 1 deletion.
  1. +6 −1 src/handle_wrap.cc
View
@@ -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();

0 comments on commit d5d043f

Please sign in to comment.