diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-06 00:09:37 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-06 00:09:37 +0000 |
commit | e8829a1981a2d9d849c377c28f9444fdefee0f44 (patch) | |
tree | 3cfe522cf76d308dec9fca773d3f9495e12abc5e /chrome/renderer/render_thread.cc | |
parent | 4f3b65a30cad88c1f1e482f7bda69ef50f8e1364 (diff) | |
download | chromium_src-e8829a1981a2d9d849c377c28f9444fdefee0f44.zip chromium_src-e8829a1981a2d9d849c377c28f9444fdefee0f44.tar.gz chromium_src-e8829a1981a2d9d849c377c28f9444fdefee0f44.tar.bz2 |
Use factory to create histograms, and refcounts to track lifetimes
This is CL patch 377028 by Raman Tenneti, with minor changes to
make the try-bots happier.
It is cleanup that better ensures lifetimes of histograms (making it harder
for users to abuse them).
bug=16495 (repairs leak induced by the first landing)
bug=18840 (should make leaks less possible)
tbr=raman.tenneti
Review URL: http://codereview.chromium.org/462027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33933 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/render_thread.cc')
-rw-r--r-- | chrome/renderer/render_thread.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index a4b36a6..d22f52a0 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -482,11 +482,17 @@ void RenderThread::SetCacheMode(bool enabled) { static void* CreateHistogram( const char *name, int min, int max, size_t buckets) { - Histogram* histogram = new Histogram(name, min, max, buckets); - if (histogram) { - histogram->SetFlags(kUmaTargetedHistogramFlag); - } - return histogram; + if (min <= 0) + min = 1; + scoped_refptr<Histogram> histogram = + Histogram::HistogramFactoryGet(name, min, max, buckets); + // We verify this was not being destructed by setting a novel "PlannedLeak" + // flag and watching out for the flag in the destructor. + histogram->SetFlags(kUmaTargetedHistogramFlag | kPlannedLeakFlag); + // We'll end up leaking these histograms, unless there is some code hiding in + // there to do the dec-ref. + histogram->AddRef(); + return histogram.get(); } static void AddHistogramSample(void* hist, int sample) { |