diff --git a/xpcom/glue/nsBaseHashtable.h b/xpcom/glue/nsBaseHashtable.h index 6ab8590865a..a1a8146ba41 100644 --- a/xpcom/glue/nsBaseHashtable.h +++ b/xpcom/glue/nsBaseHashtable.h @@ -274,14 +274,15 @@ public: size_t SizeOfExcludingThis(SizeOfEntryExcludingThisFun sizeOfEntryExcludingThis, nsMallocSizeOfFun mallocSizeOf, void *userArg = nsnull) { - if (IsInitialized()) { - s_SizeOfArgs args = { sizeOfEntryExcludingThis, userArg }; - return PL_DHashTableSizeOfExcludingThis(&this->mTable, - s_SizeOfStub, - mallocSizeOf, - &args); + if (!IsInitialized()) { + return 0; } - return 0; + if (sizeOfEntryExcludingThis) { + s_SizeOfArgs args = { sizeOfEntryExcludingThis, userArg }; + return PL_DHashTableSizeOfExcludingThis(&this->mTable, s_SizeOfStub, + mallocSizeOf, &args); + } + return PL_DHashTableSizeOfExcludingThis(&this->mTable, NULL, mallocSizeOf); } protected: diff --git a/xpcom/glue/nsTHashtable.h b/xpcom/glue/nsTHashtable.h index 762517fb0aa..e2a00135858 100644 --- a/xpcom/glue/nsTHashtable.h +++ b/xpcom/glue/nsTHashtable.h @@ -288,11 +288,14 @@ public: size_t SizeOfExcludingThis(SizeOfEntryExcludingThisFun sizeOfEntryExcludingThis, nsMallocSizeOfFun mallocSizeOf, void *userArg = NULL) const { - if (IsInitialized()) { + if (!IsInitialized()) { + return 0; + } + if (sizeOfEntryExcludingThis) { s_SizeOfArgs args = { sizeOfEntryExcludingThis, userArg }; return PL_DHashTableSizeOfExcludingThis(&mTable, s_SizeOfStub, mallocSizeOf, &args); } - return 0; + return PL_DHashTableSizeOfExcludingThis(&mTable, NULL, mallocSizeOf); } #ifdef DEBUG