summaryrefslogtreecommitdiff
path: root/src/node_v8_platform-inl.h
diff options
context:
space:
mode:
authorJichan <development@jc-lab.net>2020-01-08 21:36:05 +0900
committerAnna Henningsen <anna@addaleax.net>2020-03-21 10:57:45 +0100
commit0e576740dc9ef10203884fd631cef4456b0f3a7c (patch)
tree3155e0bea0033b1b2bf66025bebed231b239969a /src/node_v8_platform-inl.h
parent887b6a143b132b1820d161c50d439db38d09aeb1 (diff)
downloadnode-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.h9
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_;