tdf#161190: fix crash when exporting spreadsheet as PDF...

with "whole sheet export" option'

See bt here:
https://bug-attachments.documentfoundation.org/attachment.cgi?id=194240

Change-Id: I453882be5c8bb761a722482f9c94a2b2bb5c7dd4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167890
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 9a6d01a4..13682da 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -2384,7 +2384,7 @@ static void lcl_SetMediaScreen(const uno::Reference<drawing::XShape>& xMediaShap
        pPDF->SetScreenURL(nScreenId, sMediaURL);
}

static void lcl_PDFExportMediaShapeScreen(const OutputDevice* pDev, const ScPrintState& rState,
static void lcl_PDFExportMediaShapeScreen(const OutputDevice* pDev, const std::unique_ptr<ScPrintState>& rState,
                                          ScDocument& rDoc, SCTAB nTab, tools::Long nStartPage,
                                          bool bSinglePageSheets)
{
@@ -2434,12 +2434,12 @@ static void lcl_PDFExportMediaShapeScreen(const OutputDevice* pDev, const ScPrin
                        if (bTopDown) // top-bottom page order
                        {
                            nX1 = 0;
                            for (size_t i = 0; i < rState.m_aRanges.m_nPagesX; ++i)
                            for (size_t i = 0; i < rState->m_aRanges.m_nPagesX; ++i)
                            {
                                nX2 = (*rState.m_aRanges.m_xPageEndX)[i];
                                for (size_t j = 0; j < rState.m_aRanges.m_nPagesY; ++j)
                                nX2 = (*rState->m_aRanges.m_xPageEndX)[i];
                                for (size_t j = 0; j < rState->m_aRanges.m_nPagesY; ++j)
                                {
                                    auto& rPageRow = (*rState.m_aRanges.m_xPageRows)[j];
                                    auto& rPageRow = (*rState->m_aRanges.m_xPageRows)[j];
                                    nY1 = rPageRow.GetStartRow();
                                    nY2 = rPageRow.GetEndRow();

@@ -2459,15 +2459,15 @@ static void lcl_PDFExportMediaShapeScreen(const OutputDevice* pDev, const ScPrin
                        }
                        else // left to right page order
                        {
                            for (size_t i = 0; i < rState.m_aRanges.m_nPagesY; ++i)
                            for (size_t i = 0; i < rState->m_aRanges.m_nPagesY; ++i)
                            {
                                auto& rPageRow = (*rState.m_aRanges.m_xPageRows)[i];
                                auto& rPageRow = (*rState->m_aRanges.m_xPageRows)[i];
                                nY1 = rPageRow.GetStartRow();
                                nY2 = rPageRow.GetEndRow();
                                nX1 = 0;
                                for (size_t j = 0; j < rState.m_aRanges.m_nPagesX; ++j)
                                for (size_t j = 0; j < rState->m_aRanges.m_nPagesX; ++j)
                                {
                                    nX2 = (*rState.m_aRanges.m_xPageEndX)[j];
                                    nX2 = (*rState->m_aRanges.m_xPageEndX)[j];

                                    tools::Rectangle aPageRect(rDoc.GetMMRect(nX1, nY1, nX2, nY2, nTab));
                                    tools::Rectangle aTmpRect(aPageRect.GetIntersection(pObj->GetCurrentBoundRect()));
@@ -2590,7 +2590,7 @@ void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelec
    tools::Long nTabStart = pPrintFuncCache->GetTabStart(nTab);

    if (nRenderer == nTabStart)
        lcl_PDFExportMediaShapeScreen(pDev, *m_pPrintState, rDoc, nTab, nTabStart, bSinglePageSheets);
        lcl_PDFExportMediaShapeScreen(pDev, m_pPrintState, rDoc, nTab, nTabStart, bSinglePageSheets);

    ScRange aRange;
    const ScRange* pSelRange = nullptr;