From a57e32fdc78cf3bd35cf4322d12259b11b2ee289 Mon Sep 17 00:00:00 2001 From: "dbaron%fas.harvard.edu" Date: Sun, 20 Feb 2000 15:18:04 +0000 Subject: [PATCH] Bug 28555: fix large leak of StyleContextImpl's. r=karnaze@netscape.com a=jar@netscape.com git-svn-id: svn://10.0.0.236/trunk@61372 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/html/style/src/nsStyleUtil.cpp | 9 +++++++-- mozilla/content/shared/src/nsStyleUtil.cpp | 9 +++++++-- mozilla/layout/html/style/src/nsStyleUtil.cpp | 9 +++++++-- mozilla/layout/style/nsStyleUtil.cpp | 9 +++++++-- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/mozilla/content/html/style/src/nsStyleUtil.cpp b/mozilla/content/html/style/src/nsStyleUtil.cpp index 3d4b041e68a..a2a3535239c 100644 --- a/mozilla/content/html/style/src/nsStyleUtil.cpp +++ b/mozilla/content/html/style/src/nsStyleUtil.cpp @@ -189,10 +189,15 @@ const nsStyleColor* nsStyleUtil::FindNonTransparentBackground(nsIStyleContext* a PRBool aStartAtParent /*= PR_FALSE*/) { const nsStyleColor* result = nsnull; - nsIStyleContext* context = aStartAtParent ? aContext->GetParent() : aContext; + nsIStyleContext* context; + if (aStartAtParent) { + context = aContext->GetParent(); // balance ending release + } else { + context = aContext; + NS_IF_ADDREF(context); // balance ending release + } NS_ASSERTION( context != nsnull, "Cannot find NonTransparentBackground in a null context" ); - NS_IF_ADDREF(context); // balance ending release while (nsnull != context) { result = (const nsStyleColor*)context->GetStyleData(eStyleStruct_Color); diff --git a/mozilla/content/shared/src/nsStyleUtil.cpp b/mozilla/content/shared/src/nsStyleUtil.cpp index 3d4b041e68a..a2a3535239c 100644 --- a/mozilla/content/shared/src/nsStyleUtil.cpp +++ b/mozilla/content/shared/src/nsStyleUtil.cpp @@ -189,10 +189,15 @@ const nsStyleColor* nsStyleUtil::FindNonTransparentBackground(nsIStyleContext* a PRBool aStartAtParent /*= PR_FALSE*/) { const nsStyleColor* result = nsnull; - nsIStyleContext* context = aStartAtParent ? aContext->GetParent() : aContext; + nsIStyleContext* context; + if (aStartAtParent) { + context = aContext->GetParent(); // balance ending release + } else { + context = aContext; + NS_IF_ADDREF(context); // balance ending release + } NS_ASSERTION( context != nsnull, "Cannot find NonTransparentBackground in a null context" ); - NS_IF_ADDREF(context); // balance ending release while (nsnull != context) { result = (const nsStyleColor*)context->GetStyleData(eStyleStruct_Color); diff --git a/mozilla/layout/html/style/src/nsStyleUtil.cpp b/mozilla/layout/html/style/src/nsStyleUtil.cpp index 3d4b041e68a..a2a3535239c 100644 --- a/mozilla/layout/html/style/src/nsStyleUtil.cpp +++ b/mozilla/layout/html/style/src/nsStyleUtil.cpp @@ -189,10 +189,15 @@ const nsStyleColor* nsStyleUtil::FindNonTransparentBackground(nsIStyleContext* a PRBool aStartAtParent /*= PR_FALSE*/) { const nsStyleColor* result = nsnull; - nsIStyleContext* context = aStartAtParent ? aContext->GetParent() : aContext; + nsIStyleContext* context; + if (aStartAtParent) { + context = aContext->GetParent(); // balance ending release + } else { + context = aContext; + NS_IF_ADDREF(context); // balance ending release + } NS_ASSERTION( context != nsnull, "Cannot find NonTransparentBackground in a null context" ); - NS_IF_ADDREF(context); // balance ending release while (nsnull != context) { result = (const nsStyleColor*)context->GetStyleData(eStyleStruct_Color); diff --git a/mozilla/layout/style/nsStyleUtil.cpp b/mozilla/layout/style/nsStyleUtil.cpp index 3d4b041e68a..a2a3535239c 100644 --- a/mozilla/layout/style/nsStyleUtil.cpp +++ b/mozilla/layout/style/nsStyleUtil.cpp @@ -189,10 +189,15 @@ const nsStyleColor* nsStyleUtil::FindNonTransparentBackground(nsIStyleContext* a PRBool aStartAtParent /*= PR_FALSE*/) { const nsStyleColor* result = nsnull; - nsIStyleContext* context = aStartAtParent ? aContext->GetParent() : aContext; + nsIStyleContext* context; + if (aStartAtParent) { + context = aContext->GetParent(); // balance ending release + } else { + context = aContext; + NS_IF_ADDREF(context); // balance ending release + } NS_ASSERTION( context != nsnull, "Cannot find NonTransparentBackground in a null context" ); - NS_IF_ADDREF(context); // balance ending release while (nsnull != context) { result = (const nsStyleColor*)context->GetStyleData(eStyleStruct_Color);