Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

asyncwrap: fix constructor condition for early ret #9146

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/async-wrap-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ inline AsyncWrap::AsyncWrap(Environment* env,
has_async_queue_(false),
provider_type_(provider) {
// Check user controlled flag to see if the init callback should run.
if (!env->call_async_init_hook())
if (!env->using_asyncwrap())
return;
if (!env->call_async_init_hook() && parent == NULL)
return;

// TODO(trevnorris): Until it's verified all passed object's are not weak,
Expand Down
2 changes: 2 additions & 0 deletions src/async-wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ static void SetupHooks(const FunctionCallbackInfo<Value>& args) {
env->set_async_hooks_init_function(args[1].As<Function>());
env->set_async_hooks_pre_function(args[2].As<Function>());
env->set_async_hooks_post_function(args[3].As<Function>());

env->set_using_asyncwrap(true);
}


Expand Down
9 changes: 9 additions & 0 deletions src/env-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ inline Environment::Environment(v8::Local<v8::Context> context,
isolate_data_(IsolateData::GetOrCreate(context->GetIsolate(), loop)),
using_smalloc_alloc_cb_(false),
using_domains_(false),
using_asyncwrap_(false),
printed_error_(false),
debugger_agent_(this),
context_(context->GetIsolate(), context) {
Expand Down Expand Up @@ -343,6 +344,14 @@ inline void Environment::set_using_domains(bool value) {
using_domains_ = value;
}

inline bool Environment::using_asyncwrap() const {
return using_asyncwrap_;
}

inline void Environment::set_using_asyncwrap(bool value) {
using_asyncwrap_ = value;
}

inline bool Environment::printed_error() const {
return printed_error_;
}
Expand Down
4 changes: 4 additions & 0 deletions src/env.h
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,9 @@ class Environment {
inline bool using_domains() const;
inline void set_using_domains(bool value);

inline bool using_asyncwrap() const;
inline void set_using_asyncwrap(bool value);

inline bool printed_error() const;
inline void set_printed_error(bool value);

Expand Down Expand Up @@ -499,6 +502,7 @@ class Environment {
ares_task_list cares_task_list_;
bool using_smalloc_alloc_cb_;
bool using_domains_;
bool using_asyncwrap_;
QUEUE gc_tracker_queue_;
bool printed_error_;
debugger::Agent debugger_agent_;
Expand Down