Skip to content

Commit 438d530

Browse files
authored
Merge pull request #3177 from pleroy/Fixes
Serialization of empty segments
2 parents f4e4462 + 6009e06 commit 438d530

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

physics/discrete_trajectory_segment_body.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,10 @@ void DiscreteTrajectorySegment<Frame>::WriteToMessage(
213213
for (auto const it : exact) {
214214
exact_set.insert(&*it);
215215
}
216-
exact_set.insert(&*timeline_.cbegin());
217-
exact_set.insert(&*timeline_.crbegin());
216+
if (!timeline_.empty()) {
217+
exact_set.insert(&*timeline_.cbegin());
218+
exact_set.insert(&*timeline_.crbegin());
219+
}
218220

219221
// Serialize the exact points.
220222
for (auto const* ptr : exact_set) {

physics/discrete_trajectory_segment_test.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -443,5 +443,17 @@ TEST_F(DiscreteTrajectorySegmentTest, SerializationRoundTrip) {
443443
EXPECT_THAT(message2, EqualsProto(message1));
444444
}
445445

446+
TEST_F(DiscreteTrajectorySegmentTest, SerializationEmpty) {
447+
DiscreteTrajectorySegment<World> segment;
448+
serialization::DiscreteTrajectorySegment message;
449+
segment.WriteToMessage(&message, /*exact=*/{});
450+
auto const deserialized_segments = MakeSegments(1);
451+
auto& deserialized_segment = *deserialized_segments->begin();
452+
deserialized_segment = DiscreteTrajectorySegment<World>::ReadFromMessage(
453+
message,
454+
/*self=*/MakeIterator(deserialized_segments.get(),
455+
deserialized_segments->begin()));
456+
}
457+
446458
} // namespace physics
447459
} // namespace principia

0 commit comments

Comments
 (0)