diff --git a/src/threading/formatters/JSON.cc b/src/threading/formatters/JSON.cc index 5320b79d70..0a89db329d 100644 --- a/src/threading/formatters/JSON.cc +++ b/src/threading/formatters/JSON.cc @@ -22,12 +22,14 @@ namespace zeek::threading::formatter { // For deprecated NullDoubleWriter +JSON::NullDoubleWriter::NullDoubleWriter(rapidjson::StringBuffer& stream) + : writer(std::make_unique(stream)) + { + } + bool JSON::NullDoubleWriter::Double(double d) { - if ( rapidjson::internal::Double(d).IsNanOrInf() ) - return rapidjson::Writer::Null(); - - return rapidjson::Writer::Double(d); + return writer->Double(d); } JSON::JSON(MsgThread* t, TimeFormat tf, bool arg_include_unset_fields) diff --git a/src/threading/formatters/JSON.h b/src/threading/formatters/JSON.h index 5703216cd3..74bc89c8ae 100644 --- a/src/threading/formatters/JSON.h +++ b/src/threading/formatters/JSON.h @@ -2,6 +2,8 @@ #pragma once +#include + #define RAPIDJSON_HAS_STDSTRING 1 // Remove in v7.1 when removing NullDoubleWriter below and also remove // rapidjson include tweaks from CMake's dynamic_plugin_base target. @@ -46,11 +48,11 @@ public: { public: [[deprecated("Remove in v7.1 - This is an implementation detail.")]] NullDoubleWriter( - rapidjson::StringBuffer& stream) - : rapidjson::Writer(stream) - { - } + rapidjson::StringBuffer& stream); bool Double(double d); + + private: + std::unique_ptr writer; }; private: