diff --git a/src_main/core/pibytearray.h b/src_main/core/pibytearray.h index df8e2c76..da35e237 100755 --- a/src_main/core/pibytearray.h +++ b/src_main/core/pibytearray.h @@ -249,7 +249,7 @@ template inline PIByteArray & operator <<(PIByteArray & s, const PIMap & v) { s << int(v.pim_index.size_s()); for (uint i = 0; i < v.size(); ++i) - s << v.pim_index[i].index << v.pim_index[i].key; + s << int(v.pim_index[i].index) << v.pim_index[i].key; s << v.pim_content; return s; } @@ -269,9 +269,16 @@ template inline PIByteArray & operator >>(PIByteArray & s, PIMap & v) { assert(s.size_s() >= 4); int sz; s >> sz; v.pim_index.resize(sz); - for (int i = 0; i < sz; ++i) - s >> v.pim_index[i].index >> v.pim_index[i].key; + int ind = 0; + for (int i = 0; i < sz; ++i) { + s >> ind >> v.pim_index[i].key; + v.pim_index[i].index = ind; + } s >> v.pim_content; + if (v.pim_content.size_s() != v.pim_index.size_s()) { + piCout << "Warning: loaded invalid PIMap, clear"; + v.clear(); + } return s; } template