You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2017/01/10 20:28:45 UTC

thrift git commit: THRIFT-4023 Skip unexpected field types on read/write Client: Go Patch: Chen Zhiming

Repository: thrift
Updated Branches:
  refs/heads/master fac3f6972 -> 59fab5adb


THRIFT-4023 Skip unexpected field types on read/write
Client: Go
Patch: Chen Zhiming <ch...@domob.cn>

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 <ch...@domob.cn>
Authored: Mon Jan 9 22:07:42 2017 +0800
Committer: Jens Geyer <je...@apache.org>
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