| 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/page/pageint.h" | 7 #include "core/fpdfapi/page/pageint.h" |
| 8 | 8 |
| 9 #include <limits.h> | 9 #include <limits.h> |
| 10 | 10 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 const CFX_WeakPtr<CFX_ByteStringPool>& pPool) | 121 const CFX_WeakPtr<CFX_ByteStringPool>& pPool) |
| 122 : m_pBuf(pData), | 122 : m_pBuf(pData), |
| 123 m_Size(dwSize), | 123 m_Size(dwSize), |
| 124 m_Pos(0), | 124 m_Pos(0), |
| 125 m_pPool(pPool) {} | 125 m_pPool(pPool) {} |
| 126 | 126 |
| 127 CPDF_StreamParser::~CPDF_StreamParser() {} | 127 CPDF_StreamParser::~CPDF_StreamParser() {} |
| 128 | 128 |
| 129 std::unique_ptr<CPDF_Stream> CPDF_StreamParser::ReadInlineStream( | 129 std::unique_ptr<CPDF_Stream> CPDF_StreamParser::ReadInlineStream( |
| 130 CPDF_Document* pDoc, | 130 CPDF_Document* pDoc, |
| 131 CPDF_Dictionary* pDict, | 131 std::unique_ptr<CPDF_Dictionary> pDict, |
| 132 CPDF_Object* pCSObj) { | 132 CPDF_Object* pCSObj) { |
| 133 if (m_Pos == m_Size) | 133 if (m_Pos == m_Size) |
| 134 return nullptr; | 134 return nullptr; |
| 135 | 135 |
| 136 if (PDFCharIsWhitespace(m_pBuf[m_Pos])) | 136 if (PDFCharIsWhitespace(m_pBuf[m_Pos])) |
| 137 m_Pos++; | 137 m_Pos++; |
| 138 | 138 |
| 139 CFX_ByteString Decoder; | 139 CFX_ByteString Decoder; |
| 140 CPDF_Dictionary* pParam = nullptr; | 140 CPDF_Dictionary* pParam = nullptr; |
| 141 CPDF_Object* pFilter = pDict->GetDirectObjectFor("Filter"); | 141 CPDF_Object* pFilter = pDict->GetDirectObjectFor("Filter"); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 break; | 224 break; |
| 225 } | 225 } |
| 226 dwStreamSize += m_Pos - dwPrevPos; | 226 dwStreamSize += m_Pos - dwPrevPos; |
| 227 } | 227 } |
| 228 m_Pos = dwSavePos; | 228 m_Pos = dwSavePos; |
| 229 pData = FX_Alloc(uint8_t, dwStreamSize); | 229 pData = FX_Alloc(uint8_t, dwStreamSize); |
| 230 FXSYS_memcpy(pData, m_pBuf + m_Pos, dwStreamSize); | 230 FXSYS_memcpy(pData, m_pBuf + m_Pos, dwStreamSize); |
| 231 m_Pos += dwStreamSize; | 231 m_Pos += dwStreamSize; |
| 232 } | 232 } |
| 233 pDict->SetNewFor<CPDF_Number>("Length", (int)dwStreamSize); | 233 pDict->SetNewFor<CPDF_Number>("Length", (int)dwStreamSize); |
| 234 return pdfium::MakeUnique<CPDF_Stream>(pData, dwStreamSize, | 234 return pdfium::MakeUnique<CPDF_Stream>(pData, dwStreamSize, std::move(pDict)); |
| 235 pdfium::WrapUnique(pDict)); | |
| 236 } | 235 } |
| 237 | 236 |
| 238 CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() { | 237 CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() { |
| 239 m_pLastObj.reset(); | 238 m_pLastObj.reset(); |
| 240 m_WordSize = 0; | 239 m_WordSize = 0; |
| 241 if (!PositionIsInBounds()) | 240 if (!PositionIsInBounds()) |
| 242 return EndOfData; | 241 return EndOfData; |
| 243 | 242 |
| 244 int ch = m_pBuf[m_Pos++]; | 243 int ch = m_pBuf[m_Pos++]; |
| 245 while (1) { | 244 while (1) { |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 | 605 |
| 607 if (buf.GetLength() > kMaxStringLength) | 606 if (buf.GetLength() > kMaxStringLength) |
| 608 return CFX_ByteString(buf.GetBuffer(), kMaxStringLength); | 607 return CFX_ByteString(buf.GetBuffer(), kMaxStringLength); |
| 609 | 608 |
| 610 return buf.MakeString(); | 609 return buf.MakeString(); |
| 611 } | 610 } |
| 612 | 611 |
| 613 bool CPDF_StreamParser::PositionIsInBounds() const { | 612 bool CPDF_StreamParser::PositionIsInBounds() const { |
| 614 return m_Pos < m_Size; | 613 return m_Pos < m_Size; |
| 615 } | 614 } |
| OLD | NEW |