diff options
author | alexvru <alexvru@ydb.tech> | 2023-03-25 10:39:51 +0300 |
---|---|---|
committer | alexvru <alexvru@ydb.tech> | 2023-03-25 10:39:51 +0300 |
commit | f8cf10ff0fb48496a675933b846456d567cca1af (patch) | |
tree | be5f3c4d856938fce02245a2cf5cdd012311193c /library/cpp | |
parent | 7b9443d9ddcd187db6d58fb8936bb66137f7fdd1 (diff) | |
download | ydb-f8cf10ff0fb48496a675933b846456d567cca1af.tar.gz |
Fix TEventType::Load for null input buffer
Diffstat (limited to 'library/cpp')
-rw-r--r-- | library/cpp/actors/core/event.h | 3 | ||||
-rw-r--r-- | library/cpp/actors/core/event_pb.h | 2 | ||||
-rw-r--r-- | library/cpp/actors/core/event_pb_payload_ut.cpp | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/library/cpp/actors/core/event.h b/library/cpp/actors/core/event.h index 28e2c95e00..71c29082d8 100644 --- a/library/cpp/actors/core/event.h +++ b/library/cpp/actors/core/event.h @@ -252,7 +252,8 @@ namespace NActors { }; if constexpr (couldBeGot) { if (!Event) { - Event.Reset(TEventType::Load(Buffer.Get())); + static TEventSerializedData empty; + Event.Reset(TEventType::Load(Buffer ? Buffer.Get() : &empty)); } if (Event) { diff --git a/library/cpp/actors/core/event_pb.h b/library/cpp/actors/core/event_pb.h index ad730683ae..d56a9b91de 100644 --- a/library/cpp/actors/core/event_pb.h +++ b/library/cpp/actors/core/event_pb.h @@ -224,7 +224,7 @@ namespace NActors { return result; } - static IEventBase* Load(TIntrusivePtr<TEventSerializedData> input) { + static IEventBase* Load(TEventSerializedData *input) { THolder<TEventPBBase> ev(new TEv()); if (!input->GetSize()) { Y_PROTOBUF_SUPPRESS_NODISCARD ev->Record.ParseFromString(TString()); diff --git a/library/cpp/actors/core/event_pb_payload_ut.cpp b/library/cpp/actors/core/event_pb_payload_ut.cpp index fe47bf4de0..3f6d17b058 100644 --- a/library/cpp/actors/core/event_pb_payload_ut.cpp +++ b/library/cpp/actors/core/event_pb_payload_ut.cpp @@ -66,7 +66,7 @@ Y_UNIT_TEST_SUITE(TEventProtoWithPayload) { } UNIT_ASSERT_VALUES_EQUAL(chunkerRes, ser); - THolder<IEventBase> ev2 = THolder(TEventTo::Load(buffers)); + THolder<IEventBase> ev2 = THolder(TEventTo::Load(buffers.Get())); TEventTo& msg2 = static_cast<TEventTo&>(*ev2); UNIT_ASSERT_VALUES_EQUAL(msg2.Record.GetMeta(), msg.Record.GetMeta()); UNIT_ASSERT_EQUAL(msg2.GetPayload(msg2.Record.GetPayloadId(0)), msg.GetPayload(msg.Record.GetPayloadId(0))); @@ -142,7 +142,7 @@ Y_UNIT_TEST_SUITE(TEventProtoWithPayload) { // deserialize auto data = MakeIntrusive<TEventSerializedData>(ser1, TEventSerializationInfo{}); - THolder<TEvMessageWithPayloadPreSerialized> parsedEvent(static_cast<TEvMessageWithPayloadPreSerialized*>(TEvMessageWithPayloadPreSerialized::Load(data))); + THolder<TEvMessageWithPayloadPreSerialized> parsedEvent(static_cast<TEvMessageWithPayloadPreSerialized*>(TEvMessageWithPayloadPreSerialized::Load(data.Get()))); UNIT_ASSERT_VALUES_EQUAL(parsedEvent->PreSerializedData, ""); // this field is empty after deserialization auto& record = parsedEvent->GetRecord(); UNIT_ASSERT_VALUES_EQUAL(record.GetMeta(), msg.GetMeta()); |