From 8819bf9721edb002aa52092dded2b656d0cdf830 Mon Sep 17 00:00:00 2001 From: "ajschult%verizon.net" Date: Wed, 9 Apr 2008 05:24:13 +0000 Subject: [PATCH] Bug 408355: Better fix for bug 396024 that doesn't leak (as much). r+sr=roc, a=beltzner git-svn-id: svn://10.0.0.236/trunk@249888 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/base/nsDocumentViewer.cpp | 32 +++++++++++------------ mozilla/layout/printing/nsPrintEngine.cpp | 5 ++++ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/mozilla/layout/base/nsDocumentViewer.cpp b/mozilla/layout/base/nsDocumentViewer.cpp index 2593714dcff..2448c68c9c1 100644 --- a/mozilla/layout/base/nsDocumentViewer.cpp +++ b/mozilla/layout/base/nsDocumentViewer.cpp @@ -1425,23 +1425,6 @@ DocumentViewerImpl::Destroy() } } -#ifdef NS_PRINTING - if (mPrintEngine) { - // This code was moved earlier to fix a crash when a document was - // destroyed while it was in print preview mode, see bug 396024 -#ifdef NS_PRINT_PREVIEW - PRBool doingPrintPreview; - mPrintEngine->GetDoingPrintPreview(&doingPrintPreview); - if (doingPrintPreview) { - mPrintEngine->FinishPrintPreview(); - } -#endif - - mPrintEngine->Destroy(); - mPrintEngine = nsnull; - } -#endif - Hide(); // This is after Hide() so that the user doesn't see the inputs clear. @@ -1501,6 +1484,21 @@ DocumentViewerImpl::Destroy() // destructor might never be called (especially if we're being // used from JS. +#ifdef NS_PRINTING + if (mPrintEngine) { +#ifdef NS_PRINT_PREVIEW + PRBool doingPrintPreview; + mPrintEngine->GetDoingPrintPreview(&doingPrintPreview); + if (doingPrintPreview) { + mPrintEngine->FinishPrintPreview(); + } +#endif + + mPrintEngine->Destroy(); + mPrintEngine = nsnull; + } +#endif + // Avoid leaking the old viewer. if (mPreviousViewer) { mPreviousViewer->Destroy(); diff --git a/mozilla/layout/printing/nsPrintEngine.cpp b/mozilla/layout/printing/nsPrintEngine.cpp index c91415541dc..01a05aac3d4 100644 --- a/mozilla/layout/printing/nsPrintEngine.cpp +++ b/mozilla/layout/printing/nsPrintEngine.cpp @@ -3127,6 +3127,11 @@ nsPrintEngine::FinishPrintPreview() #ifdef NS_PRINT_PREVIEW + if (!mPrt) { + /* we're already finished with print preview */ + return rv; + } + rv = DocumentReadyForPrinting(); SetIsCreatingPrintPreview(PR_FALSE);