mirror of https://github.com/nodejs/node.git
handle_wrap: guard against uninitialized handle or double close
parent
cc5cea35b0
commit
d5d043f2d7
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue