Index: chrome/browser/sync_file_system/drive_backend/drive_backend_util.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/drive_backend_util.cc b/chrome/browser/sync_file_system/drive_backend/drive_backend_util.cc |
index 031e1d7d45dad3619192fd9c801a37ddfc5c444f..d743980ec7e8ca8088fb65f7a7751b22e1ebc192 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/drive_backend_util.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/drive_backend_util.cc |
@@ -169,12 +169,18 @@ scoped_ptr<ServiceMetadata> InitializeServiceMetadata(LevelDBWrapper* db) { |
base::ThreadRestrictions::AssertIOAllowed(); |
DCHECK(db); |
+ scoped_ptr<ServiceMetadata> service_metadata; |
+ |
std::string value; |
leveldb::Status status = db->Get(kServiceMetadataKey, &value); |
- |
- scoped_ptr<ServiceMetadata> service_metadata(new ServiceMetadata); |
- if (!status.ok() || !service_metadata->ParseFromString(value)) |
+ if (status.ok()) { |
+ service_metadata.reset(new ServiceMetadata); |
+ if (!service_metadata->ParseFromString(value)) |
+ service_metadata.reset(); |
+ } else if (status.IsNotFound()) { |
+ service_metadata.reset(new ServiceMetadata); |
service_metadata->set_next_tracker_id(1); |
+ } |
return service_metadata.Pass(); |
} |