From: Bryan Duxbury Date: Thu, 5 Aug 2010 22:28:13 +0000 (+0000) Subject: THRIFT-782. perl: Perl code for writing containers doesn't count length of write... X-Git-Tag: 0.4.0~30 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=20dbec7cfe9f9b642f5c04d550063e600c35a9db;p=common%2Fthrift.git THRIFT-782. perl: Perl code for writing containers doesn't count length of write*Begin or write*End This patch adds appropriate accounting of the start and end bytes when writing out container types. Patch: Conrad Hughes git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@982812 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_perl_generator.cc b/compiler/cpp/src/generate/t_perl_generator.cc index e08ade22..cbfc786d 100644 --- a/compiler/cpp/src/generate/t_perl_generator.cc +++ b/compiler/cpp/src/generate/t_perl_generator.cc @@ -1576,20 +1576,20 @@ void t_perl_generator::generate_serialize_container(ofstream &out, if (ttype->is_map()) { indent(out) << - "$output->writeMapBegin(" << + "$xfer += $output->writeMapBegin(" << type_to_enum(((t_map*)ttype)->get_key_type()) << ", " << type_to_enum(((t_map*)ttype)->get_val_type()) << ", " << "scalar(keys %{$" << prefix << "}));" << endl; } else if (ttype->is_set()) { indent(out) << - "$output->writeSetBegin(" << + "$xfer += $output->writeSetBegin(" << type_to_enum(((t_set*)ttype)->get_elem_type()) << ", " << "scalar(@{$" << prefix << "}));" << endl; } else if (ttype->is_list()) { indent(out) << - "$output->writeListBegin(" << + "$xfer += $output->writeListBegin(" << type_to_enum(((t_list*)ttype)->get_elem_type()) << ", " << "scalar(@{$" << prefix << "}));" << endl; @@ -1629,13 +1629,13 @@ void t_perl_generator::generate_serialize_container(ofstream &out, if (ttype->is_map()) { indent(out) << - "$output->writeMapEnd();" << endl; + "$xfer += $output->writeMapEnd();" << endl; } else if (ttype->is_set()) { indent(out) << - "$output->writeSetEnd();" << endl; + "$xfer += $output->writeSetEnd();" << endl; } else if (ttype->is_list()) { indent(out) << - "$output->writeListEnd();" << endl; + "$xfer += $output->writeListEnd();" << endl; } scope_down(out);