diff --git a/gfx/thebes/PrintTargetPDF.cpp b/gfx/thebes/PrintTargetPDF.cpp index 3b61696f4c3d..ce76eab42b9c 100644 --- a/gfx/thebes/PrintTargetPDF.cpp +++ b/gfx/thebes/PrintTargetPDF.cpp @@ -84,12 +84,15 @@ nsresult PrintTargetPDF::BeginPage(const IntSize& aSizeInPoints) { return NS_ERROR_FAILURE; } } - return PrintTarget::BeginPage(aSizeInPoints); + MOZ_ALWAYS_SUCCEEDS(PrintTarget::BeginPage(aSizeInPoints)); + return NS_OK; } nsresult PrintTargetPDF::EndPage() { cairo_surface_show_page(mCairoSurface); - return PrintTarget::EndPage(); + bool cairoFailure = cairo_surface_status(mCairoSurface); + MOZ_ALWAYS_SUCCEEDS(PrintTarget::EndPage()); + return cairoFailure ? NS_ERROR_FAILURE : NS_OK; } void PrintTargetPDF::Finish() { diff --git a/gfx/thebes/PrintTargetWindows.cpp b/gfx/thebes/PrintTargetWindows.cpp index 498309d3aea8..a3f12666b7fc 100644 --- a/gfx/thebes/PrintTargetWindows.cpp +++ b/gfx/thebes/PrintTargetWindows.cpp @@ -104,16 +104,17 @@ nsresult PrintTargetWindows::AbortPrinting() { } nsresult PrintTargetWindows::BeginPage(const IntSize& aSizeInPoints) { - PrintTarget::BeginPage(aSizeInPoints); + MOZ_ALWAYS_SUCCEEDS(PrintTarget::BeginPage(aSizeInPoints)); int result = ::StartPage(mDC); return (result <= 0) ? NS_ERROR_FAILURE : NS_OK; } nsresult PrintTargetWindows::EndPage() { cairo_surface_show_page(mCairoSurface); - PrintTarget::EndPage(); + bool cairoFailure = cairo_surface_status(mCairoSurface); + MOZ_ALWAYS_SUCCEEDS(PrintTarget::EndPage()); int result = ::EndPage(mDC); - return (result <= 0) ? NS_ERROR_FAILURE : NS_OK; + return (result <= 0 || cairoFailure) ? NS_ERROR_FAILURE : NS_OK; } } // namespace gfx