diff --git a/mozilla/layout/generic/nsImageMap.cpp b/mozilla/layout/generic/nsImageMap.cpp index 3d76818e076..11a07909516 100644 --- a/mozilla/layout/generic/nsImageMap.cpp +++ b/mozilla/layout/generic/nsImageMap.cpp @@ -826,9 +826,7 @@ nsImageMap::~nsImageMap() FreeAreas(); if (nsnull != mDocument) { mDocument->RemoveObserver(NS_STATIC_CAST(nsIDocumentObserver*, this)); - NS_RELEASE(mDocument); } - NS_IF_RELEASE(mDomMap); NS_IF_RELEASE(mMap); } @@ -877,13 +875,15 @@ nsImageMap::Init(nsIDOMHTMLMapElement* aMap) return NS_ERROR_NULL_POINTER; } mDomMap = aMap; - NS_ADDREF(aMap); nsresult rv = aMap->QueryInterface(kIContentIID, (void**) &mMap); if (NS_SUCCEEDED(rv)) { rv = mMap->GetDocument(mDocument); if (NS_SUCCEEDED(rv) && (nsnull != mDocument)) { mDocument->AddObserver(NS_STATIC_CAST(nsIDocumentObserver*, this)); + // mDocument is a weak reference, so release the reference we got + nsIDocument *temp = mDocument; + NS_RELEASE(temp); } } diff --git a/mozilla/layout/generic/nsImageMap.h b/mozilla/layout/generic/nsImageMap.h index 975461c3cce..0ceb2c683a7 100644 --- a/mozilla/layout/generic/nsImageMap.h +++ b/mozilla/layout/generic/nsImageMap.h @@ -150,7 +150,7 @@ protected: nsresult ChangeFocus(nsIDOMEvent* aEvent, PRBool aFocus); nsresult Invalidate(nsIPresContext* aPresContext, nsIFrame* aFrame, nsRect& aRect); - nsIDocument* mDocument; + nsIDocument* mDocument; // WEAK - the imagemap will not outlive the document nsIDOMHTMLMapElement* mDomMap; nsIContent* mMap; nsVoidArray mAreas; diff --git a/mozilla/layout/html/base/src/nsImageMap.cpp b/mozilla/layout/html/base/src/nsImageMap.cpp index 3d76818e076..11a07909516 100644 --- a/mozilla/layout/html/base/src/nsImageMap.cpp +++ b/mozilla/layout/html/base/src/nsImageMap.cpp @@ -826,9 +826,7 @@ nsImageMap::~nsImageMap() FreeAreas(); if (nsnull != mDocument) { mDocument->RemoveObserver(NS_STATIC_CAST(nsIDocumentObserver*, this)); - NS_RELEASE(mDocument); } - NS_IF_RELEASE(mDomMap); NS_IF_RELEASE(mMap); } @@ -877,13 +875,15 @@ nsImageMap::Init(nsIDOMHTMLMapElement* aMap) return NS_ERROR_NULL_POINTER; } mDomMap = aMap; - NS_ADDREF(aMap); nsresult rv = aMap->QueryInterface(kIContentIID, (void**) &mMap); if (NS_SUCCEEDED(rv)) { rv = mMap->GetDocument(mDocument); if (NS_SUCCEEDED(rv) && (nsnull != mDocument)) { mDocument->AddObserver(NS_STATIC_CAST(nsIDocumentObserver*, this)); + // mDocument is a weak reference, so release the reference we got + nsIDocument *temp = mDocument; + NS_RELEASE(temp); } } diff --git a/mozilla/layout/html/base/src/nsImageMap.h b/mozilla/layout/html/base/src/nsImageMap.h index 975461c3cce..0ceb2c683a7 100644 --- a/mozilla/layout/html/base/src/nsImageMap.h +++ b/mozilla/layout/html/base/src/nsImageMap.h @@ -150,7 +150,7 @@ protected: nsresult ChangeFocus(nsIDOMEvent* aEvent, PRBool aFocus); nsresult Invalidate(nsIPresContext* aPresContext, nsIFrame* aFrame, nsRect& aRect); - nsIDocument* mDocument; + nsIDocument* mDocument; // WEAK - the imagemap will not outlive the document nsIDOMHTMLMapElement* mDomMap; nsIContent* mMap; nsVoidArray mAreas;