Skip to content

Commit 7d61151

Browse files
committed
Ensure binary mode in temporary stringstreams
1 parent 6c0567d commit 7d61151

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

libs/maps/src/maps/CColouredOctoMap.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void CColouredOctoMap::serializeTo(mrpt::serialization::CArchive& out) const
9090
out << genericMapParams; // v2
9191

9292
// v2->v3: remove CMemoryChunk
93-
std::stringstream ss;
93+
std::stringstream ss(std::ios::in | std::ios::out | std::ios::binary);
9494
m_impl->m_octomap.writeBinaryConst(ss);
9595
const std::string& buf = ss.str();
9696
out << buf;
@@ -122,7 +122,7 @@ void CColouredOctoMap::serializeFrom(mrpt::serialization::CArchive& in, uint8_t
122122

123123
if (!buf.empty())
124124
{
125-
std::stringstream ss;
125+
std::stringstream ss(std::ios::in | std::ios::out | std::ios::binary);
126126
ss.str(buf);
127127
ss.seekg(0);
128128
m_impl->m_octomap.readBinary(ss);

libs/maps/src/maps/COctoMap.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ void COctoMap::serializeTo(mrpt::serialization::CArchive& out) const
8484
this->renderingOptions.writeToStream(out); // Added in v1
8585
out << genericMapParams;
8686
// v2->v3: remove CMemoryChunk
87-
std::stringstream ss;
87+
std::stringstream ss(std::ios::in | std::ios::out | std::ios::binary);
8888
const_cast<octomap::OcTree*>(&m_impl->m_octomap)->writeBinary(ss);
8989
const std::string& buf = ss.str();
9090
out << buf;
@@ -116,7 +116,7 @@ void COctoMap::serializeFrom(mrpt::serialization::CArchive& in, uint8_t version)
116116

117117
if (!buf.empty())
118118
{
119-
std::stringstream ss;
119+
std::stringstream ss(std::ios::in | std::ios::out | std::ios::binary);
120120
ss.str(buf);
121121
ss.seekg(0);
122122
m_impl->m_octomap.readBinary(ss);

libs/maps/src/maps/serializations_unittest.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,25 +83,31 @@ TEST(SerializeTestMaps, WriteReadToMem)
8383
CLASS_ID(CPlanarLaserScan),
8484
};
8585

86-
for (auto& lstClasse : lstClasses)
86+
for (auto& classInfo : lstClasses)
8787
{
8888
try
8989
{
9090
CMemoryStream buf;
9191
auto arch = mrpt::serialization::archiveFrom(buf);
92+
std::cout << "Serializing " << classInfo->className << "...";
9293
{
93-
auto o = mrpt::ptr_cast<CSerializable>::from(lstClasse->createObject());
94+
auto o = mrpt::ptr_cast<CSerializable>::from(classInfo->createObject());
9495
arch << *o;
9596
o.reset();
9697
}
98+
std::cout << "OK.\n";
99+
100+
std::cout << " Deserializing it...";
97101

98102
CSerializable::Ptr recons;
99103
buf.Seek(0);
100104
arch >> recons;
105+
106+
std::cout << "OK.\n";
101107
}
102108
catch (const std::exception& e)
103109
{
104-
GTEST_FAIL() << "Exception during serialization test for class '" << lstClasse->className
110+
GTEST_FAIL() << "Exception during serialization test for class '" << classInfo->className
105111
<< "':\n"
106112
<< e.what() << endl;
107113
}

0 commit comments

Comments
 (0)