diff options
author | liujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-12-21 05:33:13 +0000 |
---|---|---|
committer | liujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-12-21 05:33:13 +0000 |
commit | 5c20ca1fccbf0b4d19f5823517fde2869101f921 (patch) | |
tree | 685f0147939a307b0ad8ba8716a308ea76e629b7 /src/google/protobuf/compiler/cpp/cpp_helpers.cc | |
parent | 334dfc21ec75f85b128c087faced416b64f44619 (diff) | |
download | protobuf-5c20ca1fccbf0b4d19f5823517fde2869101f921.tar.gz protobuf-5c20ca1fccbf0b4d19f5823517fde2869101f921.tar.bz2 protobuf-5c20ca1fccbf0b4d19f5823517fde2869101f921.zip |
Escape C++ Trigraphs.
Diffstat (limited to 'src/google/protobuf/compiler/cpp/cpp_helpers.cc')
-rw-r--r-- | src/google/protobuf/compiler/cpp/cpp_helpers.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc index e3df88b0..25b05a85 100644 --- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc +++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc @@ -292,7 +292,8 @@ string DefaultValue(const FieldDescriptor* field) { ClassName(field->enum_type(), true), field->default_value_enum()->number()); case FieldDescriptor::CPPTYPE_STRING: - return "\"" + CEscape(field->default_value_string()) + "\""; + return "\"" + EscapeTrigraphs(CEscape(field->default_value_string())) + + "\""; case FieldDescriptor::CPPTYPE_MESSAGE: return FieldMessageTypeName(field) + "::default_instance()"; } @@ -335,6 +336,11 @@ string GlobalShutdownFileName(const string& filename) { return "protobuf_ShutdownFile_" + FilenameIdentifier(filename); } +// Escape C++ trigraphs by escaping question marks to \? +string EscapeTrigraphs(const string& to_escape) { + return StringReplace(to_escape, "?", "\\?", true); +} + } // namespace cpp } // namespace compiler } // namespace protobuf |