| Index: base/json/json_parser.cc
|
| diff --git a/base/json/json_parser.cc b/base/json/json_parser.cc
|
| index e85c3d256c4fc1cdd2f59944f5b9c8d270d56593..814b9c42a29fdf24972dbf3085e650cdb571b95a 100644
|
| --- a/base/json/json_parser.cc
|
| +++ b/base/json/json_parser.cc
|
| @@ -144,6 +144,12 @@ class JSONStringValue : public Value {
|
| explicit JSONStringValue(StringPiece piece)
|
| : Value(Type::STRING), string_piece_(piece) {}
|
|
|
| + ~JSONStringValue() override {
|
| + // Ugly hack that prevents ~Value() from trying to destroy string_value_.
|
| + // TODO(crbug.com/646113): Clean this up when StringValue will be removed.
|
| + type_ = Type::NONE;
|
| + }
|
| +
|
| // Overridden from Value:
|
| bool GetAsString(std::string* out_value) const override {
|
| string_piece_.CopyToString(out_value);
|
| @@ -153,6 +159,12 @@ class JSONStringValue : public Value {
|
| *out_value = UTF8ToUTF16(string_piece_);
|
| return true;
|
| }
|
| + // base::Value::GetAsString contains a proper implementation now, so the old
|
| + // behavior is copied here.
|
| + // TODO(crbug.com/646113): Clean this up when StringValue will be removed.
|
| + bool GetAsString(const StringValue** out_value) const override {
|
| + return false;
|
| + }
|
| bool GetAsString(StringPiece* out_value) const override {
|
| *out_value = string_piece_;
|
| return true;
|
|
|