OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h" | 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 m_docStatus = PDF_DATAAVAIL_ERROR; | 472 m_docStatus = PDF_DATAAVAIL_ERROR; |
473 return FALSE; | 473 return FALSE; |
474 } | 474 } |
475 | 475 |
476 m_PagesObjNum = pRef->GetRefObjNum(); | 476 m_PagesObjNum = pRef->GetRefObjNum(); |
477 m_pCurrentParser = m_pDocument->GetParser(); | 477 m_pCurrentParser = m_pDocument->GetParser(); |
478 m_docStatus = PDF_DATAAVAIL_PAGETREE; | 478 m_docStatus = PDF_DATAAVAIL_PAGETREE; |
479 return TRUE; | 479 return TRUE; |
480 } | 480 } |
481 | 481 |
482 bool CPDF_DataAvail::IsFirstCheck(int iPage) { | 482 bool CPDF_DataAvail::IsFirstCheck(uint32_t dwPage) { |
483 return m_pageMapCheckState.insert(iPage).second; | 483 return m_pageMapCheckState.insert(dwPage).second; |
484 } | 484 } |
485 | 485 |
486 void CPDF_DataAvail::ResetFirstCheck(int iPage) { | 486 void CPDF_DataAvail::ResetFirstCheck(uint32_t dwPage) { |
487 m_pageMapCheckState.erase(iPage); | 487 m_pageMapCheckState.erase(dwPage); |
488 } | 488 } |
489 | 489 |
490 FX_BOOL CPDF_DataAvail::CheckPage(DownloadHints* pHints) { | 490 FX_BOOL CPDF_DataAvail::CheckPage(DownloadHints* pHints) { |
491 uint32_t iPageObjs = m_PageObjList.GetSize(); | 491 uint32_t iPageObjs = m_PageObjList.GetSize(); |
492 CFX_ArrayTemplate<uint32_t> UnavailObjList; | 492 CFX_ArrayTemplate<uint32_t> UnavailObjList; |
493 for (uint32_t i = 0; i < iPageObjs; ++i) { | 493 for (uint32_t i = 0; i < iPageObjs; ++i) { |
494 uint32_t dwPageObjNum = m_PageObjList.GetAt(i); | 494 uint32_t dwPageObjNum = m_PageObjList.GetAt(i); |
495 FX_BOOL bExist = FALSE; | 495 FX_BOOL bExist = FALSE; |
496 CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist); | 496 CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist); |
497 if (!pObj) { | 497 if (!pObj) { |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 return TRUE; | 1228 return TRUE; |
1229 } | 1229 } |
1230 m_dwPrevXRefOffset = 0; | 1230 m_dwPrevXRefOffset = 0; |
1231 m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; | 1231 m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; |
1232 return TRUE; | 1232 return TRUE; |
1233 } | 1233 } |
1234 pHints->AddSegment(m_Pos, iTrailerSize); | 1234 pHints->AddSegment(m_Pos, iTrailerSize); |
1235 return FALSE; | 1235 return FALSE; |
1236 } | 1236 } |
1237 | 1237 |
1238 FX_BOOL CPDF_DataAvail::CheckPage(int32_t iPage, DownloadHints* pHints) { | 1238 FX_BOOL CPDF_DataAvail::CheckPage(uint32_t dwPage, DownloadHints* pHints) { |
1239 while (TRUE) { | 1239 while (TRUE) { |
1240 switch (m_docStatus) { | 1240 switch (m_docStatus) { |
1241 case PDF_DATAAVAIL_PAGETREE: | 1241 case PDF_DATAAVAIL_PAGETREE: |
1242 if (!LoadDocPages(pHints)) | 1242 if (!LoadDocPages(pHints)) |
1243 return FALSE; | 1243 return FALSE; |
1244 break; | 1244 break; |
1245 case PDF_DATAAVAIL_PAGE: | 1245 case PDF_DATAAVAIL_PAGE: |
1246 if (!LoadDocPage(iPage, pHints)) | 1246 if (!LoadDocPage(dwPage, pHints)) |
1247 return FALSE; | 1247 return FALSE; |
1248 break; | 1248 break; |
1249 case PDF_DATAAVAIL_ERROR: | 1249 case PDF_DATAAVAIL_ERROR: |
1250 return LoadAllFile(pHints); | 1250 return LoadAllFile(pHints); |
1251 default: | 1251 default: |
1252 m_bPagesTreeLoad = TRUE; | 1252 m_bPagesTreeLoad = TRUE; |
1253 m_bPagesLoad = TRUE; | 1253 m_bPagesLoad = TRUE; |
1254 m_bCurPageDictLoadOK = TRUE; | 1254 m_bCurPageDictLoadOK = TRUE; |
1255 m_docStatus = PDF_DATAAVAIL_PAGE; | 1255 m_docStatus = PDF_DATAAVAIL_PAGE; |
1256 return TRUE; | 1256 return TRUE; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 } | 1413 } |
1414 | 1414 |
1415 if (iPage == iCount) { | 1415 if (iPage == iCount) { |
1416 m_docStatus = PDF_DATAAVAIL_DONE; | 1416 m_docStatus = PDF_DATAAVAIL_DONE; |
1417 return TRUE; | 1417 return TRUE; |
1418 } | 1418 } |
1419 } | 1419 } |
1420 return TRUE; | 1420 return TRUE; |
1421 } | 1421 } |
1422 | 1422 |
1423 FX_BOOL CPDF_DataAvail::LoadDocPage(int32_t iPage, DownloadHints* pHints) { | 1423 FX_BOOL CPDF_DataAvail::LoadDocPage(uint32_t dwPage, DownloadHints* pHints) { |
| 1424 FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage); |
| 1425 int32_t iPage = safePage.ValueOrDie(); |
1424 if (m_pDocument->GetPageCount() <= iPage || | 1426 if (m_pDocument->GetPageCount() <= iPage || |
1425 m_pDocument->m_PageList.GetAt(iPage)) { | 1427 m_pDocument->m_PageList.GetAt(iPage)) { |
1426 m_docStatus = PDF_DATAAVAIL_DONE; | 1428 m_docStatus = PDF_DATAAVAIL_DONE; |
1427 return TRUE; | 1429 return TRUE; |
1428 } | 1430 } |
1429 | 1431 |
1430 if (m_pageNodes.m_type == PDF_PAGENODE_PAGE) { | 1432 if (m_pageNodes.m_type == PDF_PAGENODE_PAGE) { |
1431 if (iPage == 0) { | 1433 if (iPage == 0) { |
1432 m_docStatus = PDF_DATAAVAIL_DONE; | 1434 m_docStatus = PDF_DATAAVAIL_DONE; |
1433 return TRUE; | 1435 return TRUE; |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1524 if (!PreparePageItem()) | 1526 if (!PreparePageItem()) |
1525 return DataNotAvailable; | 1527 return DataNotAvailable; |
1526 | 1528 |
1527 m_bMainXRefLoadedOK = TRUE; | 1529 m_bMainXRefLoadedOK = TRUE; |
1528 m_bLinearedDataOK = TRUE; | 1530 m_bLinearedDataOK = TRUE; |
1529 } | 1531 } |
1530 | 1532 |
1531 return m_bLinearedDataOK ? DataAvailable : DataNotAvailable; | 1533 return m_bLinearedDataOK ? DataAvailable : DataNotAvailable; |
1532 } | 1534 } |
1533 | 1535 |
1534 FX_BOOL CPDF_DataAvail::CheckPageAnnots(int32_t iPage, DownloadHints* pHints) { | 1536 FX_BOOL CPDF_DataAvail::CheckPageAnnots(uint32_t dwPage, |
| 1537 DownloadHints* pHints) { |
1535 if (!m_objs_array.GetSize()) { | 1538 if (!m_objs_array.GetSize()) { |
1536 m_objs_array.RemoveAll(); | 1539 m_objs_array.RemoveAll(); |
1537 m_ObjectSet.clear(); | 1540 m_ObjectSet.clear(); |
1538 | 1541 |
1539 CPDF_Dictionary* pPageDict = m_pDocument->GetPage(iPage); | 1542 FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage); |
| 1543 CPDF_Dictionary* pPageDict = m_pDocument->GetPage(safePage.ValueOrDie()); |
1540 if (!pPageDict) | 1544 if (!pPageDict) |
1541 return TRUE; | 1545 return TRUE; |
1542 | 1546 |
1543 CPDF_Object* pAnnots = pPageDict->GetObjectBy("Annots"); | 1547 CPDF_Object* pAnnots = pPageDict->GetObjectBy("Annots"); |
1544 if (!pAnnots) | 1548 if (!pAnnots) |
1545 return TRUE; | 1549 return TRUE; |
1546 | 1550 |
1547 CFX_ArrayTemplate<CPDF_Object*> obj_array; | 1551 CFX_ArrayTemplate<CPDF_Object*> obj_array; |
1548 obj_array.Add(pAnnots); | 1552 obj_array.Add(pAnnots); |
1549 | 1553 |
1550 FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); | 1554 FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); |
1551 if (bRet) | 1555 if (bRet) |
1552 m_objs_array.RemoveAll(); | 1556 m_objs_array.RemoveAll(); |
1553 | 1557 |
1554 return bRet; | 1558 return bRet; |
1555 } | 1559 } |
1556 | 1560 |
1557 CFX_ArrayTemplate<CPDF_Object*> new_objs_array; | 1561 CFX_ArrayTemplate<CPDF_Object*> new_objs_array; |
1558 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); | 1562 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); |
1559 m_objs_array.RemoveAll(); | 1563 m_objs_array.RemoveAll(); |
1560 if (!bRet) | 1564 if (!bRet) |
1561 m_objs_array.Append(new_objs_array); | 1565 m_objs_array.Append(new_objs_array); |
1562 | 1566 |
1563 return bRet; | 1567 return bRet; |
1564 } | 1568 } |
1565 | 1569 |
1566 CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedFirstPage( | 1570 CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedFirstPage( |
1567 int32_t iPage, | 1571 uint32_t dwPage, |
1568 DownloadHints* pHints) { | 1572 DownloadHints* pHints) { |
1569 if (!m_bAnnotsLoad) { | 1573 if (!m_bAnnotsLoad) { |
1570 if (!CheckPageAnnots(iPage, pHints)) | 1574 if (!CheckPageAnnots(dwPage, pHints)) |
1571 return DataNotAvailable; | 1575 return DataNotAvailable; |
1572 m_bAnnotsLoad = TRUE; | 1576 m_bAnnotsLoad = TRUE; |
1573 } | 1577 } |
1574 | 1578 |
1575 DocAvailStatus nRet = CheckLinearizedData(pHints); | 1579 DocAvailStatus nRet = CheckLinearizedData(pHints); |
1576 if (nRet == DataAvailable) | 1580 if (nRet == DataAvailable) |
1577 m_bPageLoadedOK = FALSE; | 1581 m_bPageLoadedOK = FALSE; |
1578 return nRet; | 1582 return nRet; |
1579 } | 1583 } |
1580 | 1584 |
(...skipping 13 matching lines...) Expand all Loading... |
1594 CPDF_Object* pRet = pParentDict->GetObjectBy("Resources"); | 1598 CPDF_Object* pRet = pParentDict->GetObjectBy("Resources"); |
1595 if (pRet) { | 1599 if (pRet) { |
1596 m_pPageResource = pRet; | 1600 m_pPageResource = pRet; |
1597 return TRUE; | 1601 return TRUE; |
1598 } | 1602 } |
1599 | 1603 |
1600 return HaveResourceAncestor(pParentDict); | 1604 return HaveResourceAncestor(pParentDict); |
1601 } | 1605 } |
1602 | 1606 |
1603 CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( | 1607 CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( |
1604 int32_t iPage, | 1608 uint32_t dwPage, |
1605 DownloadHints* pHints) { | 1609 DownloadHints* pHints) { |
1606 if (!m_pDocument) | 1610 if (!m_pDocument) |
1607 return DataError; | 1611 return DataError; |
1608 | 1612 |
1609 if (IsFirstCheck(iPage)) { | 1613 if (IsFirstCheck(dwPage)) { |
1610 m_bCurPageDictLoadOK = FALSE; | 1614 m_bCurPageDictLoadOK = FALSE; |
1611 m_bPageLoadedOK = FALSE; | 1615 m_bPageLoadedOK = FALSE; |
1612 m_bAnnotsLoad = FALSE; | 1616 m_bAnnotsLoad = FALSE; |
1613 m_bNeedDownLoadResource = FALSE; | 1617 m_bNeedDownLoadResource = FALSE; |
1614 m_objs_array.RemoveAll(); | 1618 m_objs_array.RemoveAll(); |
1615 m_ObjectSet.clear(); | 1619 m_ObjectSet.clear(); |
1616 } | 1620 } |
1617 | 1621 |
1618 if (pdfium::ContainsKey(m_pagesLoadState, iPage)) | 1622 if (pdfium::ContainsKey(m_pagesLoadState, dwPage)) |
1619 return DataAvailable; | 1623 return DataAvailable; |
1620 | 1624 |
1621 if (m_bLinearized) { | 1625 if (m_bLinearized) { |
1622 if ((uint32_t)iPage == m_dwFirstPageNo) { | 1626 if (dwPage == m_dwFirstPageNo) { |
1623 DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints); | 1627 DocAvailStatus nRet = CheckLinearizedFirstPage(dwPage, pHints); |
1624 if (nRet == DataAvailable) | 1628 if (nRet == DataAvailable) |
1625 m_pagesLoadState.insert(iPage); | 1629 m_pagesLoadState.insert(dwPage); |
1626 return nRet; | 1630 return nRet; |
1627 } | 1631 } |
1628 | 1632 |
1629 DocAvailStatus nResult = CheckLinearizedData(pHints); | 1633 DocAvailStatus nResult = CheckLinearizedData(pHints); |
1630 if (nResult != DataAvailable) | 1634 if (nResult != DataAvailable) |
1631 return nResult; | 1635 return nResult; |
1632 | 1636 |
1633 if (m_pHintTables) { | 1637 if (m_pHintTables) { |
1634 nResult = m_pHintTables->CheckPage(iPage, pHints); | 1638 nResult = m_pHintTables->CheckPage(dwPage, pHints); |
1635 if (nResult != DataAvailable) | 1639 if (nResult != DataAvailable) |
1636 return nResult; | 1640 return nResult; |
1637 m_pagesLoadState.insert(iPage); | 1641 m_pagesLoadState.insert(dwPage); |
1638 return DataAvailable; | 1642 return DataAvailable; |
1639 } | 1643 } |
1640 | 1644 |
1641 if (m_bMainXRefLoadedOK) { | 1645 if (m_bMainXRefLoadedOK) { |
1642 if (m_bTotalLoadPageTree) { | 1646 if (m_bTotalLoadPageTree) { |
1643 if (!LoadPages(pHints)) | 1647 if (!LoadPages(pHints)) |
1644 return DataNotAvailable; | 1648 return DataNotAvailable; |
1645 } else { | 1649 } else { |
1646 if (!m_bCurPageDictLoadOK && !CheckPage(iPage, pHints)) | 1650 if (!m_bCurPageDictLoadOK && !CheckPage(dwPage, pHints)) |
1647 return DataNotAvailable; | 1651 return DataNotAvailable; |
1648 } | 1652 } |
1649 } else { | 1653 } else { |
1650 if (!LoadAllFile(pHints)) | 1654 if (!LoadAllFile(pHints)) |
1651 return DataNotAvailable; | 1655 return DataNotAvailable; |
1652 m_pDocument->GetParser()->RebuildCrossRef(); | 1656 m_pDocument->GetParser()->RebuildCrossRef(); |
1653 ResetFirstCheck(iPage); | 1657 ResetFirstCheck(dwPage); |
1654 return DataAvailable; | 1658 return DataAvailable; |
1655 } | 1659 } |
1656 } else { | 1660 } else { |
1657 if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK && | 1661 if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK && |
1658 !CheckPage(iPage, pHints)) { | 1662 !CheckPage(dwPage, pHints)) { |
1659 return DataNotAvailable; | 1663 return DataNotAvailable; |
1660 } | 1664 } |
1661 } | 1665 } |
1662 | 1666 |
1663 if (m_bHaveAcroForm && !m_bAcroFormLoad) { | 1667 if (m_bHaveAcroForm && !m_bAcroFormLoad) { |
1664 if (!CheckAcroFormSubObject(pHints)) | 1668 if (!CheckAcroFormSubObject(pHints)) |
1665 return DataNotAvailable; | 1669 return DataNotAvailable; |
1666 m_bAcroFormLoad = TRUE; | 1670 m_bAcroFormLoad = TRUE; |
1667 } | 1671 } |
1668 | 1672 |
1669 if (!m_bPageLoadedOK) { | 1673 if (!m_bPageLoadedOK) { |
1670 if (!m_objs_array.GetSize()) { | 1674 if (!m_objs_array.GetSize()) { |
1671 m_objs_array.RemoveAll(); | 1675 m_objs_array.RemoveAll(); |
1672 m_ObjectSet.clear(); | 1676 m_ObjectSet.clear(); |
1673 | 1677 |
1674 m_pPageDict = m_pDocument->GetPage(iPage); | 1678 FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage); |
| 1679 m_pPageDict = m_pDocument->GetPage(safePage.ValueOrDie()); |
1675 if (!m_pPageDict) { | 1680 if (!m_pPageDict) { |
1676 ResetFirstCheck(iPage); | 1681 ResetFirstCheck(dwPage); |
1677 return DataAvailable; | 1682 return DataAvailable; |
1678 } | 1683 } |
1679 | 1684 |
1680 CFX_ArrayTemplate<CPDF_Object*> obj_array; | 1685 CFX_ArrayTemplate<CPDF_Object*> obj_array; |
1681 obj_array.Add(m_pPageDict); | 1686 obj_array.Add(m_pPageDict); |
1682 FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); | 1687 FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); |
1683 if (!bRet) | 1688 if (!bRet) |
1684 return DataNotAvailable; | 1689 return DataNotAvailable; |
1685 | 1690 |
1686 m_objs_array.RemoveAll(); | 1691 m_objs_array.RemoveAll(); |
1687 } else { | 1692 } else { |
1688 CFX_ArrayTemplate<CPDF_Object*> new_objs_array; | 1693 CFX_ArrayTemplate<CPDF_Object*> new_objs_array; |
1689 FX_BOOL bRet = | 1694 FX_BOOL bRet = |
1690 IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); | 1695 IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); |
1691 | 1696 |
1692 m_objs_array.RemoveAll(); | 1697 m_objs_array.RemoveAll(); |
1693 if (!bRet) { | 1698 if (!bRet) { |
1694 m_objs_array.Append(new_objs_array); | 1699 m_objs_array.Append(new_objs_array); |
1695 return DataNotAvailable; | 1700 return DataNotAvailable; |
1696 } | 1701 } |
1697 } | 1702 } |
1698 m_bPageLoadedOK = TRUE; | 1703 m_bPageLoadedOK = TRUE; |
1699 } | 1704 } |
1700 | 1705 |
1701 if (!m_bAnnotsLoad) { | 1706 if (!m_bAnnotsLoad) { |
1702 if (!CheckPageAnnots(iPage, pHints)) | 1707 if (!CheckPageAnnots(dwPage, pHints)) |
1703 return DataNotAvailable; | 1708 return DataNotAvailable; |
1704 m_bAnnotsLoad = TRUE; | 1709 m_bAnnotsLoad = TRUE; |
1705 } | 1710 } |
1706 | 1711 |
1707 if (m_pPageDict && !m_bNeedDownLoadResource) { | 1712 if (m_pPageDict && !m_bNeedDownLoadResource) { |
1708 m_pPageResource = m_pPageDict->GetObjectBy("Resources"); | 1713 m_pPageResource = m_pPageDict->GetObjectBy("Resources"); |
1709 if (!m_pPageResource) | 1714 m_bNeedDownLoadResource = |
1710 m_bNeedDownLoadResource = HaveResourceAncestor(m_pPageDict); | 1715 m_pPageResource || HaveResourceAncestor(m_pPageDict); |
1711 else | |
1712 m_bNeedDownLoadResource = TRUE; | |
1713 } | 1716 } |
1714 | 1717 |
1715 if (m_bNeedDownLoadResource) { | 1718 if (m_bNeedDownLoadResource) { |
1716 FX_BOOL bRet = CheckResources(pHints); | 1719 if (!CheckResources(pHints)) |
1717 if (!bRet) | |
1718 return DataNotAvailable; | 1720 return DataNotAvailable; |
1719 m_bNeedDownLoadResource = FALSE; | 1721 m_bNeedDownLoadResource = FALSE; |
1720 } | 1722 } |
1721 | 1723 |
1722 m_bPageLoadedOK = FALSE; | 1724 m_bPageLoadedOK = FALSE; |
1723 m_bAnnotsLoad = FALSE; | 1725 m_bAnnotsLoad = FALSE; |
1724 m_bCurPageDictLoadOK = FALSE; | 1726 m_bCurPageDictLoadOK = FALSE; |
1725 | 1727 |
1726 ResetFirstCheck(iPage); | 1728 ResetFirstCheck(dwPage); |
1727 m_pagesLoadState.insert(iPage); | 1729 m_pagesLoadState.insert(dwPage); |
1728 return DataAvailable; | 1730 return DataAvailable; |
1729 } | 1731 } |
1730 | 1732 |
1731 FX_BOOL CPDF_DataAvail::CheckResources(DownloadHints* pHints) { | 1733 FX_BOOL CPDF_DataAvail::CheckResources(DownloadHints* pHints) { |
1732 if (!m_objs_array.GetSize()) { | 1734 if (!m_objs_array.GetSize()) { |
1733 m_objs_array.RemoveAll(); | 1735 m_objs_array.RemoveAll(); |
1734 CFX_ArrayTemplate<CPDF_Object*> obj_array; | 1736 CFX_ArrayTemplate<CPDF_Object*> obj_array; |
1735 obj_array.Add(m_pPageResource); | 1737 obj_array.Add(m_pPageResource); |
1736 | 1738 |
1737 FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); | 1739 FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1833 return FormAvailable; | 1835 return FormAvailable; |
1834 } | 1836 } |
1835 | 1837 |
1836 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} | 1838 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} |
1837 | 1839 |
1838 CPDF_DataAvail::PageNode::~PageNode() { | 1840 CPDF_DataAvail::PageNode::~PageNode() { |
1839 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) | 1841 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) |
1840 delete m_childNode[i]; | 1842 delete m_childNode[i]; |
1841 m_childNode.RemoveAll(); | 1843 m_childNode.RemoveAll(); |
1842 } | 1844 } |
OLD | NEW |