diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 942f9d5688..d590d0a648 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -10017,8 +10017,7 @@ namespace BinaryNinja { class AnalysisContext : public CoreRefCountObject { - std::unique_ptr m_reader; - Json::StreamWriterBuilder m_builder; + static Json::StreamWriterBuilder& JsonBuilder(); public: AnalysisContext(BNAnalysisContext* analysisContext); @@ -10102,7 +10101,7 @@ namespace BinaryNinja { }}, arg); - return Inform(Json::writeString(m_builder, request)); + return Inform(Json::writeString(JsonBuilder(), request)); } #endif }; diff --git a/workflow.cpp b/workflow.cpp index 9c1c7d20a9..f35d3ed7b2 100644 --- a/workflow.cpp +++ b/workflow.cpp @@ -8,12 +8,21 @@ using namespace BinaryNinja; using namespace std; -AnalysisContext::AnalysisContext(BNAnalysisContext* analysisContext) : - m_reader(Json::CharReaderBuilder().newCharReader()) +// static +Json::StreamWriterBuilder& AnalysisContext::JsonBuilder() +{ + static Json::StreamWriterBuilder* builder = [] { + auto builder = new Json::StreamWriterBuilder; + (*builder)["indentation"] = ""; + return builder; + }(); + return *builder; +} + +AnalysisContext::AnalysisContext(BNAnalysisContext* analysisContext) { // LogError("API-Side AnalysisContext Constructed!"); m_object = analysisContext; - m_builder["indentation"] = ""; }