summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 05:20:15 +0000
committersatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 05:20:15 +0000
commit9fc572a72cc38a795a3f6b3c6aacd711c4d3fe4e (patch)
treeb49c0a502b0f8af4a0595a2486a5fe693fbe7760
parentc2c88aa39261dd536d74de77ba924d9d1b7a49dd (diff)
downloadchromium_src-9fc572a72cc38a795a3f6b3c6aacd711c4d3fe4e.zip
chromium_src-9fc572a72cc38a795a3f6b3c6aacd711c4d3fe4e.tar.gz
chromium_src-9fc572a72cc38a795a3f6b3c6aacd711c4d3fe4e.tar.bz2
gdata: Fix a leak from GDataEntry::FromProtoString()
The leakage ocurrred on failure. BUG=136597 TEST=tools/valgrind/valgrind.sh --leak-check=full out/Release/unit_tests --gtest_filter=GDataDBTest.* Review URL: https://chromiumcodereview.appspot.com/10735040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146058 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/gdata/gdata_files.cc8
-rw-r--r--tools/valgrind/memcheck/suppressions.txt10
2 files changed, 4 insertions, 14 deletions
diff --git a/chrome/browser/chromeos/gdata/gdata_files.cc b/chrome/browser/chromeos/gdata/gdata_files.cc
index efe657c..e188d11 100644
--- a/chrome/browser/chromeos/gdata/gdata_files.cc
+++ b/chrome/browser/chromeos/gdata/gdata_files.cc
@@ -734,20 +734,20 @@ scoped_ptr<GDataEntry> GDataEntry::FromProtoString(
GDataDirectoryProto dir_proto;
bool ok = dir_proto.ParseFromString(serialized_proto);
if (ok && dir_proto.gdata_entry().file_info().is_directory()) {
- GDataDirectory* dir = new GDataDirectory(NULL, NULL);
+ scoped_ptr<GDataDirectory> dir(new GDataDirectory(NULL, NULL));
if (!dir->FromProto(dir_proto))
return scoped_ptr<GDataEntry>(NULL);
- return scoped_ptr<GDataEntry>(dir);
+ return scoped_ptr<GDataEntry>(dir.release());
}
GDataFileProto file_proto;
ok = file_proto.ParseFromString(serialized_proto);
if (ok) {
DCHECK(!file_proto.gdata_entry().file_info().is_directory());
- GDataFile* file = new GDataFile(NULL, NULL);
+ scoped_ptr<GDataFile> file(new GDataFile(NULL, NULL));
if (!file->FromProto(file_proto))
return scoped_ptr<GDataEntry>(NULL);
- return scoped_ptr<GDataEntry>(file);
+ return scoped_ptr<GDataEntry>(file.release());
}
return scoped_ptr<GDataEntry>(NULL);
}
diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt
index f522ecd..5d6af02 100644
--- a/tools/valgrind/memcheck/suppressions.txt
+++ b/tools/valgrind/memcheck/suppressions.txt
@@ -5550,16 +5550,6 @@
fun:_ZN16RenderThreadImplC1ERKSs
fun:_ZN21WebRTCAudioDeviceTest5SetUpEv
}
-{
- bug_chromium_os_32464
- Memcheck:Leak
- fun:_Znw*
- fun:_ZN5gdata10GDataEntry15FromProtoStringERKSs
- fun:_ZN5gdata12GDataLevelDB15GetByResourceIdERKSsP10scoped_ptrINS_10GDataEntryEE
- ...
- fun:_ZN5gdata12_GLOBAL__N_111*
- fun:_ZN5gdata38GDataDBTest_IncompatibleProtoTest_Test8TestBodyEv
-}
#-----------------------------------------------------------------------