THRIFT-1622. cpp: Incorrect size returned on read
This patch adds a missing 'xfer +=' in a few spots.
Patch: NN
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1350268 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index 08c0884..20b991d 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -3878,17 +3878,17 @@
out <<
indent() << "::apache::thrift::protocol::TType " << ktype << ";" << endl <<
indent() << "::apache::thrift::protocol::TType " << vtype << ";" << endl <<
- indent() << "iprot->readMapBegin(" <<
+ indent() << "xfer += iprot->readMapBegin(" <<
ktype << ", " << vtype << ", " << size << ");" << endl;
} else if (ttype->is_set()) {
out <<
indent() << "::apache::thrift::protocol::TType " << etype << ";" << endl <<
- indent() << "iprot->readSetBegin(" <<
+ indent() << "xfer += iprot->readSetBegin(" <<
etype << ", " << size << ");" << endl;
} else if (ttype->is_list()) {
out <<
indent() << "::apache::thrift::protocol::TType " << etype << ";" << endl <<
- indent() << "iprot->readListBegin(" <<
+ indent() << "xfer += iprot->readListBegin(" <<
etype << ", " << size << ");" << endl;
if (!use_push) {
indent(out) << prefix << ".resize(" << size << ");" << endl;
@@ -3916,11 +3916,11 @@
// Read container end
if (ttype->is_map()) {
- indent(out) << "iprot->readMapEnd();" << endl;
+ indent(out) << "xfer += iprot->readMapEnd();" << endl;
} else if (ttype->is_set()) {
- indent(out) << "iprot->readSetEnd();" << endl;
+ indent(out) << "xfer += iprot->readSetEnd();" << endl;
} else if (ttype->is_list()) {
- indent(out) << "iprot->readListEnd();" << endl;
+ indent(out) << "xfer += iprot->readListEnd();" << endl;
}
scope_down(out);