From c4beda980278118b3a4348dc5113de56567df061 Mon Sep 17 00:00:00 2001 From: Jake Farrell Date: Tue, 6 Sep 2011 15:19:18 +0000 Subject: [PATCH] Thrift-1279: type set is handled incorrectly when writing object Client: php Patch: Darius Staisiunas Fixes issue to iIterate through scalar types correctly. git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1165703 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_php_generator.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc index 2ca1d6f0..6d8fd883 100644 --- a/compiler/cpp/src/generate/t_php_generator.cc +++ b/compiler/cpp/src/generate/t_php_generator.cc @@ -2136,13 +2136,15 @@ void t_php_generator::generate_serialize_container(ofstream &out, scope_down(out); } else if (ttype->is_set()) { string iter = tmp("iter"); + string iter_val = tmp("iter"); indent(out) << - "foreach ($" << prefix << " as $" << iter << ")" << endl; + "foreach ($" << prefix << " as $" << iter << " => $" << iter_val << ")" << endl; scope_up(out); - indent(out) << "if (is_scalar($" << iter << ")) {" << endl << - indent() << " $" << prefix << "[$" << iter << "] = true;" << endl << - indent() << "}" << endl; + indent(out) << "if (is_scalar($" << iter_val << ")) {" << endl; generate_serialize_set_element(out, (t_set*)ttype, iter); + indent(out) << "} else {" << endl; + generate_serialize_set_element(out, (t_set*)ttype, iter_val); + indent(out) << "}" << endl; scope_down(out); } else if (ttype->is_list()) { string iter = tmp("iter"); -- 2.17.1