Fixed GetFontMetrics API to AddRef

git-svn-id: svn://10.0.0.236/trunk@6685 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
kipp%netscape.com 1998-07-29 03:57:27 +00:00
parent 9cfd62203f
commit 5dae01efa5
3 changed files with 43 additions and 0 deletions

View File

@ -548,6 +548,7 @@ const nsFont& nsRenderingContextUnix :: GetFont()
nsIFontMetrics* nsRenderingContextUnix :: GetFontMetrics()
{
NS_IF_ADDREF(mFontMetrics);
return mFontMetrics;
}

View File

@ -40,7 +40,48 @@ nsFontMetricsWin :: ~nsFontMetricsWin()
}
}
#ifdef LEAK_DEBUG
nsrefcnt nsFontMetricsWin :: AddRef()
{
NS_PRECONDITION(mRefCnt != 0, "resurrecting a dead object");
return ++mRefCnt;
}
nsrefcnt nsFontMetricsWin :: Release()
{
NS_PRECONDITION(mRefCnt != 0, "too many release's");
if (--mRefCnt == 0) {
delete this;
}
return mRefCnt;
}
nsresult nsFontMetricsWin :: QueryInterface(REFNSIID aIID, void** aInstancePtr)
{
if (NULL == aInstancePtr) {
return NS_ERROR_NULL_POINTER;
}
*aInstancePtr = NULL;
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kClassIID, kIFontMetricsIID);
if (aIID.Equals(kClassIID)) {
*aInstancePtr = (void*) this;
mRefCnt++;
return NS_OK;
}
if (aIID.Equals(kISupportsIID)) {
*aInstancePtr = (void*) ((nsISupports*)this);
AddRef();
return NS_OK;
}
return NS_NOINTERFACE;
}
#else
NS_IMPL_ISUPPORTS(nsFontMetricsWin, kIFontMetricsIID)
#endif
// Note: The presentation context has a reference to this font
// metrics, therefore avoid circular references by not AddRef'ing the

View File

@ -583,6 +583,7 @@ const nsFont& nsRenderingContextWin :: GetFont()
nsIFontMetrics* nsRenderingContextWin :: GetFontMetrics()
{
NS_IF_ADDREF(mFontMetrics);
return mFontMetrics;
}