Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database.cc

Issue 22782002: [SyncFS] Fix leak on MetadataDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: leak fix Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/heapcheck/suppressions.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
6 6
7 #include <stack> 7 #include <stack>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 scoped_ptr<FileMetadata> file( 634 scoped_ptr<FileMetadata> file(
635 CreateFileMetadataFromChangeResource(change)); 635 CreateFileMetadataFromChangeResource(change));
636 std::string file_id = file->file_id(); 636 std::string file_id = file->file_id();
637 637
638 MarkTrackersDirtyByFileID(file_id, batch.get()); 638 MarkTrackersDirtyByFileID(file_id, batch.get());
639 if (!file->details().deleted()) 639 if (!file->details().deleted())
640 MaybeAddTrackersForNewFile(*file, batch.get()); 640 MaybeAddTrackersForNewFile(*file, batch.get());
641 641
642 if (FindTrackersByFileID(file_id, NULL)) { 642 if (FindTrackersByFileID(file_id, NULL)) {
643 PutFileToBatch(*file, batch.get()); 643 PutFileToBatch(*file, batch.get());
644 file_by_id_[file_id] = file.release(); 644
645 FileMetadata* file_ptr = file.release();
646 std::swap(file_ptr, file_by_id_[file_id]);
647 delete file_ptr;
645 } 648 }
646 } 649 }
647 650
648 WriteToDatabase(batch.Pass(), callback); 651 WriteToDatabase(batch.Pass(), callback);
649 } 652 }
650 653
651 MetadataDatabase::MetadataDatabase(base::SequencedTaskRunner* task_runner) 654 MetadataDatabase::MetadataDatabase(base::SequencedTaskRunner* task_runner)
652 : task_runner_(task_runner), weak_ptr_factory_(this) { 655 : task_runner_(task_runner), weak_ptr_factory_(this) {
653 DCHECK(task_runner); 656 DCHECK(task_runner);
654 } 657 }
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
1024 FROM_HERE, 1027 FROM_HERE,
1025 base::Bind(&leveldb::DB::Write, 1028 base::Bind(&leveldb::DB::Write,
1026 base::Unretained(db_.get()), 1029 base::Unretained(db_.get()),
1027 leveldb::WriteOptions(), 1030 leveldb::WriteOptions(),
1028 base::Owned(batch.release())), 1031 base::Owned(batch.release())),
1029 base::Bind(&AdaptLevelDBStatusToSyncStatusCode, callback)); 1032 base::Bind(&AdaptLevelDBStatusToSyncStatusCode, callback));
1030 } 1033 }
1031 1034
1032 } // namespace drive_backend 1035 } // namespace drive_backend
1033 } // namespace sync_file_system 1036 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « no previous file | tools/heapcheck/suppressions.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698