Index: chrome/browser/page_state.cc |
diff --git a/chrome/browser/page_state.cc b/chrome/browser/page_state.cc |
index f47a4cf1098d7f5219189ce8a9402a2ec0be18eb..1d52ffbb44e0ec862d3b92e4e9efca935f926e35 100644 |
--- a/chrome/browser/page_state.cc |
+++ b/chrome/browser/page_state.cc |
@@ -40,16 +40,15 @@ void PageState::InitWithBytes(const std::string& bytes) { |
state_.reset(new DictionaryValue); |
JSONStringValueSerializer serializer(bytes); |
- Value* root = NULL; |
+ scoped_ptr<Value> root(serializer.Deserialize(NULL)); |
- if (!serializer.Deserialize(&root, NULL)) |
+ if (!root.get()) { |
NOTREACHED(); |
- |
- if (root != NULL && root->GetType() == Value::TYPE_DICTIONARY) { |
- state_.reset(static_cast<DictionaryValue*>(root)); |
- } else if (root) { |
- delete root; |
+ return; |
} |
+ |
+ if (root->GetType() == Value::TYPE_DICTIONARY) |
+ state_.reset(static_cast<DictionaryValue*>(root.release())); |
} |
void PageState::GetByteRepresentation(std::string* out) const { |