diff options
author | Jichan <development@jc-lab.net> | 2020-01-08 21:36:05 +0900 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2020-03-21 10:57:45 +0100 |
commit | 0e576740dc9ef10203884fd631cef4456b0f3a7c (patch) | |
tree | 3155e0bea0033b1b2bf66025bebed231b239969a /src/node_v8_platform-inl.h | |
parent | 887b6a143b132b1820d161c50d439db38d09aeb1 (diff) | |
download | node-new-0e576740dc9ef10203884fd631cef4456b0f3a7c.tar.gz |
src: fix what a dispose without checking
If created platform with CreatePlatform, the crash occurs because
it does not check if it was initialized to v8_platform
when DisposePlatform was called.
Refs: https://github.com/nodejs/node/pull/31260
Co-authored-by: Anna Henningsen <anna@addaleax.net>
PR-URL: https://github.com/nodejs/node/pull/30467
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Diffstat (limited to 'src/node_v8_platform-inl.h')
-rw-r--r-- | src/node_v8_platform-inl.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/node_v8_platform-inl.h b/src/node_v8_platform-inl.h index 0f4a98a985..ce6d5dd223 100644 --- a/src/node_v8_platform-inl.h +++ b/src/node_v8_platform-inl.h @@ -12,6 +12,7 @@ #include "tracing/node_trace_writer.h" #include "tracing/trace_event.h" #include "tracing/traced_value.h" +#include "util.h" namespace node { @@ -79,8 +80,12 @@ class NodeTraceStateObserver }; struct V8Platform { + bool initialized_ = false; + #if NODE_USE_V8_PLATFORM inline void Initialize(int thread_pool_size) { + CHECK(!initialized_); + initialized_ = true; tracing_agent_ = std::make_unique<tracing::Agent>(); node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get()); node::tracing::TracingController* controller = @@ -99,6 +104,10 @@ struct V8Platform { } inline void Dispose() { + if (!initialized_) + return; + initialized_ = false; + StopTracingAgent(); platform_->Shutdown(); delete platform_; |