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;
}