| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 65924c7 commit e6f0680
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -67,7 +67,7 @@ void HandleWrap::Close(const FunctionCallbackInfo<Value>& args) { | |||
| 67 | 67 | wrap->Close(args[0]); | |
| 68 | 68 | } | |
| 69 | 69 | ||
| 70 | - void HandleWrap::Close(v8::Local<v8::Value> close_callback) { | ||
| 70 | + void HandleWrap::Close(Local<Value> close_callback) { | ||
| 71 | 71 | if (state_ != kInitialized) | |
| 72 | 72 | return; | |
| 73 | 73 | ||
@@ -77,8 +77,7 @@ void HandleWrap::Close(v8::Local<v8::Value> close_callback) { | |||
| 77 | 77 | ||
| 78 | 78 | if (!close_callback.IsEmpty() && close_callback->IsFunction()) { | |
| 79 | 79 | object()->Set(env()->context(), env()->onclose_string(), close_callback) | |
| 80 | - .FromJust(); | ||
| 81 | - state_ = kClosingWithCallback; | ||
| 80 | + .FromMaybe(false); | ||
| 82 | 81 | } | |
| 83 | 82 | } | |
| 84 | 83 | ||
@@ -109,24 +108,23 @@ HandleWrap::HandleWrap(Environment* env, | |||
| 109 | 108 | ||
| 110 | 109 | ||
| 111 | 110 | void HandleWrap::OnClose(uv_handle_t* handle) { | |
| 112 | - HandleWrap* wrap = static_cast<HandleWrap*>(handle->data); | ||
| 111 | + std::unique_ptr<HandleWrap> wrap { static_cast<HandleWrap*>(handle->data) }; | ||
| 113 | 112 | Environment* env = wrap->env(); | |
| 114 | 113 | HandleScope scope(env->isolate()); | |
| 115 | 114 | Context::Scope context_scope(env->context()); | |
| 116 | 115 | ||
| 117 | 116 | // The wrap object should still be there. | |
| 118 | 117 | CHECK_EQ(wrap->persistent().IsEmpty(), false); | |
| 119 | - CHECK(wrap->state_ >= kClosing && wrap->state_ <= kClosingWithCallback); | ||
| 118 | + CHECK_EQ(wrap->state_, kClosing); | ||
| 120 | 119 | ||
| 121 | - const bool have_close_callback = (wrap->state_ == kClosingWithCallback); | ||
| 122 | 120 | wrap->state_ = kClosed; | |
| 123 | 121 | ||
| 124 | 122 | wrap->OnClose(); | |
| 125 | 123 | ||
| 126 | - if (have_close_callback) | ||
| 124 | + if (wrap->object()->Has(env->context(), env->onclose_string()) | ||
| 125 | + .FromMaybe(false)) { | ||
| 127 | 126 | wrap->MakeCallback(env->onclose_string(), 0, nullptr); | |
| 128 | - | ||
| 129 | - delete wrap; | ||
| 127 | + } | ||
| 130 | 128 | } | |
| 131 | 129 | ||
| 132 | 130 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -95,7 +95,7 @@ class HandleWrap : public AsyncWrap { | |||
| 95 | 95 | // refer to `doc/guides/node-postmortem-support.md` | |
| 96 | 96 | friend int GenDebugSymbols(); | |
| 97 | 97 | ListNode<HandleWrap> handle_wrap_queue_; | |
| 98 | - enum { kInitialized, kClosing, kClosingWithCallback, kClosed } state_; | ||
| 98 | + enum { kInitialized, kClosing, kClosed } state_; | ||
| 99 | 99 | uv_handle_t* const handle_; | |
| 100 | 100 | }; | |
| 101 | 101 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments