THRIFT-3533 Can not send nil pointer as service method argument
Client: Go
Patch: Chris Bannister
diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index 6efff0e..f4ddfeb 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -1634,6 +1634,9 @@
t_field::e_req field_required;
int32_t field_id = -1;
+ out << indent() << "if p != nil {" << endl;
+ indent_up();
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
string field_method_prefix("writeField");
field_name = (*f_iter)->get_name();
@@ -1650,6 +1653,9 @@
<< "(oprot); err != nil { return err }" << endl;
}
+ indent_down();
+ out << indent() << "}" << endl;
+
// Write the struct map
out << indent() << "if err := oprot.WriteFieldStop(); err != nil {" << endl;
out << indent() << " return thrift.PrependError(\"write field stop error: \", err) }" << endl;