瀏覽代碼

Merge pull request #4239 from mrpi/master

Create std::string in Arena memory
Adam Cozzette 7 年之前
父節點
當前提交
6456e5d646
共有 1 個文件被更改,包括 2 次插入4 次删除
  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,
   void CreateInstance(::google::protobuf::Arena* arena,
                       const ::std::string* initial_value) {
                       const ::std::string* initial_value) {
     GOOGLE_DCHECK(initial_value != NULL);
     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
   GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE
   void CreateInstanceNoArena(const ::std::string* initial_value) {
   void CreateInstanceNoArena(const ::std::string* initial_value) {