From 78d3b89f6dc3976f153571e0061034bab02990bd Mon Sep 17 00:00:00 2001 From: Rajashekar Reddy Date: Wed, 10 Aug 2022 16:16:52 +0530 Subject: [PATCH] fix defer variable corruption due to updation of deferments while iterating on it --- include/cereal/cereal.hpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/cereal/cereal.hpp b/include/cereal/cereal.hpp index 764380bf..34636632 100644 --- a/include/cereal/cereal.hpp +++ b/include/cereal/cereal.hpp @@ -338,8 +338,10 @@ namespace cereal /*! This will cause any data wrapped in DeferredData to be immediately serialized */ void serializeDeferments() { - for( auto & deferment : itsDeferments ) - deferment(); + // for( auto & deferment : itsDeferments ) + // deferment(); + for(int32_t i = 0; i < itsDeferments.size(); i++) + itsDeferments[i](); } /*! @name Boost Transition Layer @@ -735,8 +737,10 @@ namespace cereal /*! This will cause any data wrapped in DeferredData to be immediately serialized */ void serializeDeferments() { - for( auto & deferment : itsDeferments ) - deferment(); + // for( auto & deferment : itsDeferments ) + // deferment(); + for(int32_t i = 0; i < itsDeferments.size(); i++) + itsDeferments[i](); } /*! @name Boost Transition Layer