diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 58a091739..aca78eeb7 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -856,6 +856,12 @@ nsDocShell::~nsDocShell() shPrivate->SetRootDocShell(nullptr); } + if (mContentViewer) { + mContentViewer->Close(nullptr); + mContentViewer->Destroy(); + mContentViewer = nullptr; + } + if (--gDocShellCount == 0) { NS_IF_RELEASE(sURIFixup); } diff --git a/dom/cache/StreamList.cpp b/dom/cache/StreamList.cpp index 3e3ac2a67..6ca3a62b9 100644 --- a/dom/cache/StreamList.cpp +++ b/dom/cache/StreamList.cpp @@ -138,7 +138,15 @@ StreamList::CloseAll() { NS_ASSERT_OWNINGTHREAD(StreamList); if (mStreamControl) { - mStreamControl->CloseAll(); + auto streamControl = mStreamControl; + mStreamControl = nullptr; + + streamControl->CloseAll(); + + mStreamControl = streamControl; + streamControl = nullptr; + + mStreamControl->Shutdown(); } }