Browse Source

Create std::string in Arena memory

Ludger Sprenker 7 năm trước cách đây
mục cha
commit
9ab859f5a5
1 tập tin đã thay đổi với 2 bổ sung4 xóa
  1. 2 4
      src/google/protobuf/arenastring.h

+ 2 - 4
src/google/protobuf/arenastring.h

@@ -322,10 +322,8 @@ struct LIBPROTOBUF_EXPORT ArenaStringPtr {
   void CreateInstance(::google::protobuf::Arena* arena,
                       const ::std::string* initial_value) {
     GOOGLE_DCHECK(initial_value != NULL);
-    ptr_ = new ::std::string(*initial_value);
-    if (arena != NULL) {
-      arena->Own(ptr_);
-    }
+    // uses "new ::std::string" when arena is nullptr
+    ptr_ = Arena::Create<::std::string>(arena, *initial_value);
   }
   GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE
   void CreateInstanceNoArena(const ::std::string* initial_value) {