Chromium Code Reviews| Index: fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
| diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
| index d55183751e152eda11f99b6c0638b5163be7ad6e..a7a3f9655884ab7152456a43278e42143c96a9eb 100644 |
| --- a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
| +++ b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
| @@ -154,6 +154,7 @@ int CPDFXFA_Document::GetPageCount() { |
| CPDFXFA_Page* CPDFXFA_Document::GetPage(int page_index) { |
| if (page_index < 0) |
| return nullptr; |
| + |
| CPDFXFA_Page* pPage = nullptr; |
| int nCount = m_XFAPageList.GetSize(); |
| if (nCount > 0 && page_index < nCount) { |
| @@ -166,6 +167,7 @@ CPDFXFA_Page* CPDFXFA_Document::GetPage(int page_index) { |
| } |
| if (pPage) |
| return pPage; |
| + |
| pPage = new CPDFXFA_Page(this, page_index); |
| if (!pPage->LoadPage()) { |
| pPage->Release(); |
| @@ -177,13 +179,13 @@ CPDFXFA_Page* CPDFXFA_Document::GetPage(int page_index) { |
| CPDFXFA_Page* CPDFXFA_Document::GetPage(CXFA_FFPageView* pPage) { |
| if (!pPage) |
| - return NULL; |
| + return nullptr; |
| if (!m_pXFADoc) |
| - return NULL; |
| + return nullptr; |
| if (m_iDocType != DOCTYPE_DYNAMIC_XFA) |
| - return NULL; |
| + return nullptr; |
| int nSize = m_XFAPageList.GetSize(); |
| for (int i = 0; i < nSize; i++) { |
| @@ -194,10 +196,16 @@ CPDFXFA_Page* CPDFXFA_Document::GetPage(CXFA_FFPageView* pPage) { |
| return pTempPage; |
| } |
| - return NULL; |
| + return nullptr; |
| } |
| void CPDFXFA_Document::DeletePage(int page_index) { |
| + // Delete from the document first because, if GetPage was never called for |
| + // this page index then m_XFAPageList may have size < page_index even if it's |
|
Lei Zhang
2016/04/25 20:52:59
nit: refer to variables as |var|.
dsinclair
2016/04/25 21:01:13
Done.
|
| + // a valid page in the document. |
| + if (m_pPDFDoc) |
| + m_pPDFDoc->DeletePage(page_index); |
| + |
| if (page_index < 0 || page_index >= m_XFAPageList.GetSize()) |
| return; |