From 4b2070df2bbfee838579eee2b3e264e5b7c3927e Mon Sep 17 00:00:00 2001 From: Chris Beall Date: Tue, 20 Nov 2018 15:02:15 -0800 Subject: [PATCH] Fix xml roundtrip serialization crash in boost 1.66-1.68. --- gtsam/base/serialization.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gtsam/base/serialization.h b/gtsam/base/serialization.h index 89544cfd6..ebd893ad1 100644 --- a/gtsam/base/serialization.h +++ b/gtsam/base/serialization.h @@ -84,8 +84,13 @@ bool deserializeFromFile(const std::string& filename, T& output) { template std::string serializeXML(const T& input, const std::string& name="data") { std::ostringstream out_archive_stream; - boost::archive::xml_oarchive out_archive(out_archive_stream); - out_archive << boost::serialization::make_nvp(name.c_str(), input); + // braces to flush out_archive as it goes out of scope before taking str() + // fixes crash with boost 1.66-1.68 + // see https://github.com/boostorg/serialization/issues/82 + { + boost::archive::xml_oarchive out_archive(out_archive_stream); + out_archive << boost::serialization::make_nvp(name.c_str(), input); + } return out_archive_stream.str(); }