From: Jake Farrell Date: Fri, 7 Oct 2011 00:25:46 +0000 (+0000) Subject: Thrift-1379: fix uninitialized enum values in thrift C++ objects X-Git-Tag: 0.8.0~59 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=581481f232be3f70945f2333c9a53ae5ea5346f8;p=common%2Fthrift.git Thrift-1379: fix uninitialized enum values in thrift C++ objects Client: cpp Patch: Dave Watson The thrift-generated code for C++ class objects does not provide any initialization for enum values, so they wind up containing random/uninitialized data. This causes problems when clients do not send argument data, as the server receives random data rather than zero for unpassed args. Enums should be initialized to zero. git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1179909 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 e75573e0..5291875d 100755 --- a/compiler/cpp/src/generate/t_cpp_generator.cc +++ b/compiler/cpp/src/generate/t_cpp_generator.cc @@ -847,7 +847,7 @@ void t_cpp_generator::generate_struct_definition(ofstream& out, for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) { t_type* t = get_true_type((*m_iter)->get_type()); - if (t->is_base_type()) { + if (t->is_base_type() || t->is_enum()) { string dval; if (t->is_enum()) { dval += "(" + type_name(t) + ")";