Repository: thrift Updated Branches: refs/heads/master fac3f6972 -> 59fab5adb
THRIFT-4023 Skip unexpected field types on read/write Client: Go Patch: Chen Zhiming <[email protected]> This closes #1154 Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/59fab5ad Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/59fab5ad Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/59fab5ad Branch: refs/heads/master Commit: 59fab5adb499866ac174d2a8edc3808619b2ed58 Parents: fac3f69 Author: czm1989 <[email protected]> Authored: Mon Jan 9 22:07:42 2017 +0800 Committer: Jens Geyer <[email protected]> Committed: Tue Jan 10 21:28:05 2017 +0100 ---------------------------------------------------------------------- compiler/cpp/src/thrift/generate/t_go_generator.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/59fab5ad/compiler/cpp/src/thrift/generate/t_go_generator.cc ---------------------------------------------------------------------- diff --git a/compiler/cpp/src/thrift/generate/t_go_generator.cc b/compiler/cpp/src/thrift/generate/t_go_generator.cc index 9919cb1..defc682 100644 --- a/compiler/cpp/src/thrift/generate/t_go_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_go_generator.cc @@ -1527,9 +1527,15 @@ void t_go_generator::generate_go_struct_reader(ofstream& out, thriftFieldTypeId = "thrift.STRING"; } - out << indent() << "if err := p." << field_method_prefix << field_method_suffix << "(iprot); err != nil {" + out << indent() << "if fieldTypeId == " << thriftFieldTypeId << " {" << endl; + out << indent() << " if err := p." << field_method_prefix << field_method_suffix << "(iprot); err != nil {" << endl; - out << indent() << " return err" << endl; + out << indent() << " return err" << endl; + out << indent() << " }" << endl; + out << indent() << "} else {" << endl; + out << indent() << " if err := iprot.Skip(fieldTypeId); err != nil {" << endl; + out << indent() << " return err" << endl; + out << indent() << " }" << endl; out << indent() << "}" << endl; // Mark required field as read
