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;