Index: third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc |
index 226c2aa03b8094dfba184d3ccc750da8e76f91ef..6030f7ce1b168299200241aba95e3280745c6ba7 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc |
+++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc |
@@ -298,13 +298,15 @@ void ServiceGenerator::GenerateGetPrototype(RequestOrResponse which, |
" return $type$::default_instance();\n"); |
} |
- printer->Print(vars_, |
+ printer->Print( |
" default:\n" |
" GOOGLE_LOG(FATAL) << \"Bad method index; this should never happen.\";\n" |
- " return *static_cast< ::google::protobuf::Message*>(NULL);\n" |
+ " return *::google::protobuf::MessageFactory::generated_factory()\n" |
+ " ->GetPrototype(method->$input_or_output$_type());\n" |
" }\n" |
"}\n" |
- "\n"); |
+ "\n", |
+ "input_or_output", which == REQUEST ? "input" : "output"); |
} |
void ServiceGenerator::GenerateStubMethods(io::Printer* printer) { |