瀏覽代碼

fix #1342 cause by ownership issues

mike07026 9 年之前
父節點
當前提交
e514f232a0
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      src/google/protobuf/util/internal/default_value_objectwriter.cc

+ 4 - 1
src/google/protobuf/util/internal/default_value_objectwriter.cc

@@ -165,7 +165,10 @@ DefaultValueObjectWriter* DefaultValueObjectWriter::RenderBytes(
   if (current_ == NULL) {
     ow_->RenderBytes(name, value);
   } else {
-    RenderDataPiece(name, DataPiece(value, false, true));
+    // Since StringPiece is essentially a pointer, takes a copy of "value" to
+    // avoid ownership issues.
+    string_values_.push_back(new string(value.ToString()));
+    RenderDataPiece(name, DataPiece(*string_values_.back(), false, true));
   }
   return this;
 }