summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-09 19:40:00 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-09 19:40:00 +0000
commit961c3ee9e2f89148b9e001ea116e90b5b68681a4 (patch)
tree6e308bbd58b7fc13a48f88373ff05e1389ed4f83
parenteef15aa68c1ead785af67f8e4aaf8fcdb7ed6c04 (diff)
downloadchromium_src-961c3ee9e2f89148b9e001ea116e90b5b68681a4.zip
chromium_src-961c3ee9e2f89148b9e001ea116e90b5b68681a4.tar.gz
chromium_src-961c3ee9e2f89148b9e001ea116e90b5b68681a4.tar.bz2
fix for memory leak and illegal access, 2nd attempt.
* ExternalMetrics class requires scoped_refptr. original CL : http://codereview.chromium.org/470006 BUG=None TEST=Run unit_test with valgrind. patch from issue 470006 Review URL: http://codereview.chromium.org/465140 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34176 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/external_metrics_unittest.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/chrome/browser/chromeos/external_metrics_unittest.cc b/chrome/browser/chromeos/external_metrics_unittest.cc
index b484736..a1853c9 100644
--- a/chrome/browser/chromeos/external_metrics_unittest.cc
+++ b/chrome/browser/chromeos/external_metrics_unittest.cc
@@ -6,6 +6,7 @@
#include <sys/file.h>
#include "base/basictypes.h"
+#include "base/scoped_ptr.h"
#include "chrome/browser/chromeos/external_metrics.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -28,19 +29,19 @@ static void SendMessage(const char* path, const char* name, const char* value) {
close(fd);
}
-const char* received_name = NULL;
-const char* received_value = NULL;
+static scoped_ptr<std::string> received_name;
+static scoped_ptr<std::string> received_value;
int received_count = 0;
static void ReceiveMessage(const char* name, const char* value) {
- received_name = name;
- received_value = value;
+ received_name.reset(new std::string(name));
+ received_value.reset(new std::string(value));
received_count++;
}
static void CheckMessage(const char* name, const char* value, int count) {
- EXPECT_EQ(0, strcmp(received_name, name));
- EXPECT_EQ(0, strcmp(received_value, value));
+ EXPECT_EQ(*received_name.get(), name);
+ EXPECT_EQ(*received_value.get(), value);
EXPECT_EQ(received_count, count);
}
@@ -56,8 +57,8 @@ TEST(ExternalMetricsTest, ParseExternalMetricsFile) {
int npairs = ARRAYSIZE_UNSAFE(pairs);
int32 i;
const char* path = "/tmp/.chromeos-metrics";
-
- chromeos::ExternalMetrics* external_metrics = new chromeos::ExternalMetrics();
+ scoped_refptr<chromeos::ExternalMetrics>
+ external_metrics(new chromeos::ExternalMetrics());
external_metrics->SetRecorder(&ReceiveMessage);
EXPECT_TRUE(unlink(path) == 0 || errno == ENOENT);