diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 4dbf12dd39d..dbf5ce294f7 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -458,7 +458,7 @@ protected: nsCOMPtr mLoadGroup; - nsIHTMLContentSink* mSink; // Weak reference + nsWeakPtr mSink; // Weak reference public: static nsresult @@ -668,7 +668,7 @@ DummyParserRequest::DummyParserRequest(nsIHTMLContentSink* aSink) "unable to create about:parser-dummy-request"); } - mSink = aSink; + mSink = do_GetWeakReference(aSink); } @@ -684,9 +684,13 @@ DummyParserRequest::Cancel(nsresult status) { // Cancel parser nsresult rv = NS_OK; - HTMLContentSink* sink = NS_STATIC_CAST(HTMLContentSink*, mSink); - if ((sink) && (sink->mParser)) { - sink->mParser->CancelParsingEvents(); + nsCOMPtr sink = do_QueryReferent(mSink); + if (sink) { + nsIHTMLContentSink* actualSink = sink; + HTMLContentSink* htmlContentSink = NS_STATIC_CAST(HTMLContentSink*, actualSink); + if (htmlContentSink->mParser) { + htmlContentSink->mParser->CancelParsingEvents(); + } } return rv; }