]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 3537: statistics histogram leaks memory
authorTimo Teras <timo.teras@iki.fi>
Mon, 21 May 2012 03:59:19 +0000 (21:59 -0600)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 21 May 2012 03:59:19 +0000 (21:59 -0600)
src/StatHist.cc
src/StatHist.h
src/tests/stub_StatHist.cc

index 9e5d0ddcc1bfe6383a51599c8f1650468f562cf8..a56c547d79d3866b2b0570b8448de20f36264808 100644 (file)
@@ -59,19 +59,12 @@ StatHist::init(unsigned int newCapacity, hbase_f * val_in_, hbase_f * val_out_,
     scale_ = capacity_ / val_in(max_ - min_);
 }
 
-void
-StatHist::clear()
-{
-    for (unsigned int i=0; i<capacity_; ++i)
-        bins[i]=0;
-}
-
 StatHist::StatHist(const StatHist &src) :
         capacity_(src.capacity_), min_(src.min_), max_(src.max_),
         scale_(src.scale_), val_in(src.val_in), val_out(src.val_out)
 {
     if (src.bins!=NULL) {
-        bins = static_cast<bins_type *>(xcalloc(src.capacity_, sizeof(int)));
+        bins = static_cast<bins_type *>(xcalloc(src.capacity_, sizeof(bins_type)));
         memcpy(bins,src.bins,capacity_*sizeof(*bins));
     }
 }
index 576525d21a16d348cc085e9a8fbbc914e4d30dbd..05db3112715e934bfb12e22a51e009cceb9497c2 100644 (file)
@@ -57,7 +57,7 @@ public:
      */
     StatHist();
     StatHist(const StatHist&); //not needed
-    ~StatHist();
+    ~StatHist() { clear(); };
 
     typedef uint64_t bins_type;
 
@@ -148,12 +148,12 @@ StatHist::StatHist() :
         scale_(1.0), val_in(NULL), val_out(NULL)
 {}
 
-inline
-StatHist::~StatHist()
+inline void
+StatHist::clear()
 {
-    xfree(bins); //can handle case of bins being NULL
+    xfree(bins); // can handle case of bins being NULL
     bins=NULL;
-    capacity_=0; //mark as destructed, may be needed for troubleshooting
+    capacity_=0; // mark as destructed, may be needed for troubleshooting
 }
 
 #endif /* STATHIST_H_ */
index cf0cfdfd4ea21c35ed458ce904ee9a616e0a69a3..f3d70947d3c53755be9f9b3ad9889d8d73263300 100644 (file)
@@ -24,10 +24,6 @@ double
 statHistDeltaPctile(const StatHist & A, const StatHist & B, double pctile)
 STUB_RETVAL(0.0)
 
-void
-StatHist::clear()
-STUB
-
 void
 StatHist::logInit(unsigned int i, double d1, double d2)
 STUB