THRIFT-3879 Undefined evaluation order causes incorrect processing in the C++ library JSON protocol
Client: C++
Patch: Daniel Mueller <dtmuller@web.de>
This closes #1050
diff --git a/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp b/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
index 412e927..31ebb3c 100644
--- a/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
+++ b/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
@@ -651,7 +651,9 @@
}
uint32_t TJSONProtocol::writeMapEnd() {
- return writeJSONObjectEnd() + writeJSONArrayEnd();
+ uint32_t result = writeJSONObjectEnd();
+ result += writeJSONArrayEnd();
+ return result;
}
uint32_t TJSONProtocol::writeListBegin(const TType elemType, const uint32_t size) {
@@ -1015,7 +1017,9 @@
}
uint32_t TJSONProtocol::readMapEnd() {
- return readJSONObjectEnd() + readJSONArrayEnd();
+ uint32_t result = readJSONObjectEnd();
+ result += readJSONArrayEnd();
+ return result;
}
uint32_t TJSONProtocol::readListBegin(TType& elemType, uint32_t& size) {