unchanged: --- protobuf-cleaned/src/google/protobuf/arenastring.cc 2015-12-30 13:21:46.000000000 -0800 +++ protobuf-patched/src/google/protobuf/arenastring.cc 2016-03-31 13:25:40.888006485 -0700 @@ -37,6 +37,20 @@ namespace protobuf { namespace internal { +::std::string* ArenaStringPtr::MutableNoArena( + const ::std::string* default_value) { + if (ptr_ == default_value) { + CreateInstanceNoArena(default_value); + } + return ptr_; +} + +void ArenaStringPtr::DestroyNoArena(const ::std::string* default_value) { + if (ptr_ != default_value) { + delete ptr_; + } + ptr_ = NULL; +} } // namespace internal } // namespace protobuf only in patch2: unchanged: --- protobuf-cleaned/src/google/protobuf/arenastring.h 2015-12-30 13:21:46.000000000 -0800 +++ protobuf-patched/src/google/protobuf/arenastring.h 2016-03-31 13:25:40.888006485 -0700 @@ -214,12 +214,7 @@ struct LIBPROTOBUF_EXPORT ArenaStringPtr { inline const ::std::string& GetNoArena() const { return *ptr_; } - inline ::std::string* MutableNoArena(const ::std::string* default_value) { - if (ptr_ == default_value) { - CreateInstanceNoArena(default_value); - } - return ptr_; - } + ::std::string* MutableNoArena(const ::std::string* default_value); inline ::std::string* ReleaseNoArena(const ::std::string* default_value) { if (ptr_ == default_value) { @@ -243,11 +238,7 @@ struct LIBPROTOBUF_EXPORT ArenaStringPtr { } } - inline void DestroyNoArena(const ::std::string* default_value) { - if (ptr_ != default_value) { - delete ptr_; - } - } + void DestroyNoArena(const ::std::string* default_value); inline void ClearToEmptyNoArena(const ::std::string* default_value) { if (ptr_ == default_value) {