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/parser/cpdf_data_avail.h" | 7 #include "core/fpdfapi/parser/cpdf_data_avail.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 new_obj_array.push_back(pArray->GetObjectAt(k)); | 135 new_obj_array.push_back(pArray->GetObjectAt(k)); |
136 } break; | 136 } break; |
137 case CPDF_Object::STREAM: | 137 case CPDF_Object::STREAM: |
138 pObj = pObj->GetDict(); | 138 pObj = pObj->GetDict(); |
139 case CPDF_Object::DICTIONARY: { | 139 case CPDF_Object::DICTIONARY: { |
140 CPDF_Dictionary* pDict = pObj->GetDict(); | 140 CPDF_Dictionary* pDict = pObj->GetDict(); |
141 if (pDict && pDict->GetStringFor("Type") == "Page" && !bParsePage) | 141 if (pDict && pDict->GetStringFor("Type") == "Page" && !bParsePage) |
142 continue; | 142 continue; |
143 | 143 |
144 for (const auto& it : *pDict) { | 144 for (const auto& it : *pDict) { |
145 const CFX_ByteString& key = it.first; | 145 if (it.first != "Parent") |
146 CPDF_Object* value = it.second; | 146 new_obj_array.push_back(it.second.get()); |
147 if (key != "Parent") | |
148 new_obj_array.push_back(value); | |
149 } | 147 } |
150 } break; | 148 } break; |
151 case CPDF_Object::REFERENCE: { | 149 case CPDF_Object::REFERENCE: { |
152 CPDF_Reference* pRef = pObj->AsReference(); | 150 CPDF_Reference* pRef = pObj->AsReference(); |
153 uint32_t dwNum = pRef->GetRefObjNum(); | 151 uint32_t dwNum = pRef->GetRefObjNum(); |
154 | 152 |
155 FX_FILESIZE offset; | 153 FX_FILESIZE offset; |
156 uint32_t size = GetObjectSize(dwNum, offset); | 154 uint32_t size = GetObjectSize(dwNum, offset); |
157 if (size == 0 || offset < 0 || offset >= m_dwFileLen) | 155 if (size == 0 || offset < 0 || offset >= m_dwFileLen) |
158 break; | 156 break; |
(...skipping 1541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1700 return AreObjectsAvailable(obj_array, true, nullptr, dummy); | 1698 return AreObjectsAvailable(obj_array, true, nullptr, dummy); |
1701 } | 1699 } |
1702 | 1700 |
1703 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} | 1701 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} |
1704 | 1702 |
1705 CPDF_DataAvail::PageNode::~PageNode() { | 1703 CPDF_DataAvail::PageNode::~PageNode() { |
1706 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) | 1704 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) |
1707 delete m_childNode[i]; | 1705 delete m_childNode[i]; |
1708 m_childNode.RemoveAll(); | 1706 m_childNode.RemoveAll(); |
1709 } | 1707 } |
OLD | NEW |