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/ipdf_data_avail.h" | 7 #include "core/fpdfapi/fpdf_parser/include/ipdf_data_avail.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" | 9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" |
10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" | 10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" |
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 uint32_t objnum, | 785 uint32_t objnum, |
786 CPDF_IndirectObjectHolder* pObjList) { | 786 CPDF_IndirectObjectHolder* pObjList) { |
787 FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); | 787 FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); |
788 m_syntaxParser.RestorePos(pos); | 788 m_syntaxParser.RestorePos(pos); |
789 | 789 |
790 bool bIsNumber; | 790 bool bIsNumber; |
791 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); | 791 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); |
792 if (!bIsNumber) | 792 if (!bIsNumber) |
793 return nullptr; | 793 return nullptr; |
794 | 794 |
795 uint32_t parser_objnum = FXSYS_atoui(word); | 795 uint32_t parser_objnum = FXSYS_atoui(word.c_str()); |
796 if (objnum && parser_objnum != objnum) | 796 if (objnum && parser_objnum != objnum) |
797 return nullptr; | 797 return nullptr; |
798 | 798 |
799 word = m_syntaxParser.GetNextWord(&bIsNumber); | 799 word = m_syntaxParser.GetNextWord(&bIsNumber); |
800 if (!bIsNumber) | 800 if (!bIsNumber) |
801 return nullptr; | 801 return nullptr; |
802 | 802 |
803 uint32_t gennum = FXSYS_atoui(word); | 803 uint32_t gennum = FXSYS_atoui(word.c_str()); |
804 if (m_syntaxParser.GetKeyword() != "obj") { | 804 if (m_syntaxParser.GetKeyword() != "obj") { |
805 m_syntaxParser.RestorePos(SavedPos); | 805 m_syntaxParser.RestorePos(SavedPos); |
806 return nullptr; | 806 return nullptr; |
807 } | 807 } |
808 | 808 |
809 CPDF_Object* pObj = | 809 CPDF_Object* pObj = |
810 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); | 810 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); |
811 m_syntaxParser.RestorePos(SavedPos); | 811 m_syntaxParser.RestorePos(SavedPos); |
812 return pObj; | 812 return pObj; |
813 } | 813 } |
(...skipping 28 matching lines...) Expand all Loading... |
842 | 842 |
843 m_dwHeaderOffset = offset; | 843 m_dwHeaderOffset = offset; |
844 m_syntaxParser.InitParser(file.get(), offset); | 844 m_syntaxParser.InitParser(file.get(), offset); |
845 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); | 845 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); |
846 | 846 |
847 bool bNumber; | 847 bool bNumber; |
848 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); | 848 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); |
849 if (!bNumber) | 849 if (!bNumber) |
850 return FALSE; | 850 return FALSE; |
851 | 851 |
852 uint32_t objnum = FXSYS_atoui(wordObjNum); | 852 uint32_t objnum = FXSYS_atoui(wordObjNum.c_str()); |
853 if (m_pLinearized) { | 853 if (m_pLinearized) { |
854 m_pLinearized->Release(); | 854 m_pLinearized->Release(); |
855 m_pLinearized = nullptr; | 855 m_pLinearized = nullptr; |
856 } | 856 } |
857 | 857 |
858 m_pLinearized = | 858 m_pLinearized = |
859 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); | 859 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); |
860 if (!m_pLinearized) | 860 if (!m_pLinearized) |
861 return FALSE; | 861 return FALSE; |
862 | 862 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { | 894 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { |
895 m_syntaxParser.GetNextWord(nullptr); | 895 m_syntaxParser.GetNextWord(nullptr); |
896 | 896 |
897 bool bNumber; | 897 bool bNumber; |
898 CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); | 898 CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); |
899 if (!bNumber) { | 899 if (!bNumber) { |
900 m_docStatus = PDF_DATAAVAIL_ERROR; | 900 m_docStatus = PDF_DATAAVAIL_ERROR; |
901 return FALSE; | 901 return FALSE; |
902 } | 902 } |
903 | 903 |
904 m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); | 904 m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str.c_str()); |
905 if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { | 905 if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { |
906 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; | 906 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; |
907 return TRUE; | 907 return TRUE; |
908 } | 908 } |
909 | 909 |
910 m_dwLastXRefOffset = m_dwXRefOffset; | 910 m_dwLastXRefOffset = m_dwXRefOffset; |
911 SetStartOffset(m_dwXRefOffset); | 911 SetStartOffset(m_dwXRefOffset); |
912 m_docStatus = PDF_DATAAVAIL_CROSSREF; | 912 m_docStatus = PDF_DATAAVAIL_CROSSREF; |
913 return TRUE; | 913 return TRUE; |
914 } | 914 } |
(...skipping 21 matching lines...) Expand all Loading... |
936 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); | 936 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); |
937 | 937 |
938 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); | 938 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); |
939 m_parser.m_pSyntax->InitParser(file.get(), 0); | 939 m_parser.m_pSyntax->InitParser(file.get(), 0); |
940 | 940 |
941 bool bNumber; | 941 bool bNumber; |
942 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); | 942 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); |
943 if (!bNumber) | 943 if (!bNumber) |
944 return -1; | 944 return -1; |
945 | 945 |
946 uint32_t objNum = FXSYS_atoui(objnum); | 946 uint32_t objNum = FXSYS_atoui(objnum.c_str()); |
947 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); | 947 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); |
948 if (!pObj) { | 948 if (!pObj) { |
949 m_Pos += m_parser.m_pSyntax->SavePos(); | 949 m_Pos += m_parser.m_pSyntax->SavePos(); |
950 return 0; | 950 return 0; |
951 } | 951 } |
952 | 952 |
953 CPDF_Dictionary* pDict = pObj->GetDict(); | 953 CPDF_Dictionary* pDict = pObj->GetDict(); |
954 CPDF_Name* pName = ToName(pDict ? pDict->GetObjectBy("Type") : nullptr); | 954 CPDF_Name* pName = ToName(pDict ? pDict->GetObjectBy("Type") : nullptr); |
955 if (pName) { | 955 if (pName) { |
956 if (pName->GetString() == "XRef") { | 956 if (pName->GetString() == "XRef") { |
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1832 return FormAvailable; | 1832 return FormAvailable; |
1833 } | 1833 } |
1834 | 1834 |
1835 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} | 1835 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} |
1836 | 1836 |
1837 CPDF_DataAvail::PageNode::~PageNode() { | 1837 CPDF_DataAvail::PageNode::~PageNode() { |
1838 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) | 1838 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) |
1839 delete m_childNode[i]; | 1839 delete m_childNode[i]; |
1840 m_childNode.RemoveAll(); | 1840 m_childNode.RemoveAll(); |
1841 } | 1841 } |
OLD | NEW |