From 816ad655d96aa1cdca70607bfc8d4e8b988fb312 Mon Sep 17 00:00:00 2001 From: "warren%netscape.com" Date: Thu, 28 Oct 1999 08:35:53 +0000 Subject: [PATCH] Fixed bug in calculating leak total. --- xpcom/base/nsTraceRefcnt.cpp | 7 ++++--- xpcom/base/nsTraceRefcntImpl.cpp | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/xpcom/base/nsTraceRefcnt.cpp b/xpcom/base/nsTraceRefcnt.cpp index 16481427373e..151c39c4de2a 100644 --- a/xpcom/base/nsTraceRefcnt.cpp +++ b/xpcom/base/nsTraceRefcnt.cpp @@ -187,7 +187,7 @@ public: static PRIntn TotalEntries(PLHashEntry *he, PRIntn i, void *arg) { BloatEntry* entry = (BloatEntry*)he->value; - if (entry) { + if (entry && nsCRT::strcmp(entry->mClassName, "TOTAL") != 0) { entry->Total((BloatEntry*)arg); } return HT_ENUMERATE_NEXT; @@ -202,11 +202,12 @@ public: total->mAllStats.mRefsOutstandingVariance += mNewStats.mRefsOutstandingVariance + mAllStats.mRefsOutstandingVariance; total->mAllStats.mObjsOutstandingTotal += mNewStats.mObjsOutstandingTotal + mAllStats.mObjsOutstandingTotal; total->mAllStats.mObjsOutstandingVariance += mNewStats.mObjsOutstandingVariance + mAllStats.mObjsOutstandingVariance; - total->mClassSize += mClassSize; // adjust for average in DumpTotal + PRInt32 rem = (mNewStats.mCreates + mAllStats.mCreates) - (mNewStats.mDestroys + mAllStats.mDestroys); + total->mClassSize += mClassSize * rem; // adjust for average in DumpTotal } nsresult DumpTotal(PRUint32 nClasses, FILE* out) { - mClassSize /= nClasses; + mClassSize /= (mAllStats.mCreates - mAllStats.mDestroys); return Dump(-1, out, &mAllStats); } diff --git a/xpcom/base/nsTraceRefcntImpl.cpp b/xpcom/base/nsTraceRefcntImpl.cpp index 16481427373e..151c39c4de2a 100644 --- a/xpcom/base/nsTraceRefcntImpl.cpp +++ b/xpcom/base/nsTraceRefcntImpl.cpp @@ -187,7 +187,7 @@ public: static PRIntn TotalEntries(PLHashEntry *he, PRIntn i, void *arg) { BloatEntry* entry = (BloatEntry*)he->value; - if (entry) { + if (entry && nsCRT::strcmp(entry->mClassName, "TOTAL") != 0) { entry->Total((BloatEntry*)arg); } return HT_ENUMERATE_NEXT; @@ -202,11 +202,12 @@ public: total->mAllStats.mRefsOutstandingVariance += mNewStats.mRefsOutstandingVariance + mAllStats.mRefsOutstandingVariance; total->mAllStats.mObjsOutstandingTotal += mNewStats.mObjsOutstandingTotal + mAllStats.mObjsOutstandingTotal; total->mAllStats.mObjsOutstandingVariance += mNewStats.mObjsOutstandingVariance + mAllStats.mObjsOutstandingVariance; - total->mClassSize += mClassSize; // adjust for average in DumpTotal + PRInt32 rem = (mNewStats.mCreates + mAllStats.mCreates) - (mNewStats.mDestroys + mAllStats.mDestroys); + total->mClassSize += mClassSize * rem; // adjust for average in DumpTotal } nsresult DumpTotal(PRUint32 nClasses, FILE* out) { - mClassSize /= nClasses; + mClassSize /= (mAllStats.mCreates - mAllStats.mDestroys); return Dump(-1, out, &mAllStats); }