| Index: core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
|
| index 3295b7f9e034875582758e7efa8cffddfc95c80d..b12a65a84438098c63bac2e12efaee5760bc6f3f 100644
|
| --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
|
| +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
|
| @@ -671,51 +671,28 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() {
|
| CFX_ByteString name = GetString(0);
|
| if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() &&
|
| m_pLastImage->GetStream()->GetObjNum()) {
|
| - AddImage(NULL, m_pLastImage, FALSE);
|
| + AddImage(nullptr, m_pLastImage, FALSE);
|
| return;
|
| }
|
| +
|
| if (m_Options.m_bTextOnly) {
|
| - CPDF_Object* pRes = NULL;
|
| - if (m_pResources == NULL) {
|
| + if (!m_pResources)
|
| return;
|
| - }
|
| - if (m_pResources == m_pPageResources) {
|
| - CPDF_Dictionary* pList = m_pResources->GetDict(FX_BSTRC("XObject"));
|
| - if (pList == NULL) {
|
| - return;
|
| - }
|
| - pRes = pList->GetElement(name);
|
| - if (pRes == NULL || pRes->GetType() != PDFOBJ_REFERENCE) {
|
| - return;
|
| - }
|
| - } else {
|
| - CPDF_Dictionary* pList = m_pResources->GetDict(FX_BSTRC("XObject"));
|
| - if (pList == NULL) {
|
| - if (m_pPageResources == NULL) {
|
| - return;
|
| - }
|
| - CPDF_Dictionary* pList = m_pPageResources->GetDict(FX_BSTRC("XObject"));
|
| - if (pList == NULL) {
|
| - return;
|
| - }
|
| - pRes = pList->GetElement(name);
|
| - if (pRes == NULL || pRes->GetType() != PDFOBJ_REFERENCE) {
|
| - return;
|
| - }
|
| - } else {
|
| - pRes = pList->GetElement(name);
|
| - if (pRes == NULL || pRes->GetType() != PDFOBJ_REFERENCE) {
|
| - return;
|
| - }
|
| - }
|
| - }
|
| +
|
| + CPDF_Dictionary* pList = m_pResources->GetDict(FX_BSTRC("XObject"));
|
| + if (!pList && m_pPageResources && m_pResources != m_pPageResources)
|
| + pList = m_pPageResources->GetDict(FX_BSTRC("XObject"));
|
| + if (!pList)
|
| + return;
|
| + CPDF_Reference* pRes = ToReference(pList->GetElement(name));
|
| + if (!pRes)
|
| + return;
|
| +
|
| FX_BOOL bForm;
|
| - if (m_pDocument->IsFormStream(((CPDF_Reference*)pRes)->GetRefObjNum(),
|
| - bForm) &&
|
| - !bForm) {
|
| + if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm)
|
| return;
|
| - }
|
| }
|
| +
|
| CPDF_Stream* pXObject = ToStream(FindResourceObj(FX_BSTRC("XObject"), name));
|
| if (!pXObject) {
|
| m_bResourceMissing = TRUE;
|
|
|