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 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 | 329 |
330 if (bIsNumber) { | 330 if (bIsNumber) { |
331 m_WordBuffer[m_WordSize] = 0; | 331 m_WordBuffer[m_WordSize] = 0; |
332 return new CPDF_Number(CFX_ByteStringC(m_WordBuffer, m_WordSize)); | 332 return new CPDF_Number(CFX_ByteStringC(m_WordBuffer, m_WordSize)); |
333 } | 333 } |
334 | 334 |
335 int first_char = m_WordBuffer[0]; | 335 int first_char = m_WordBuffer[0]; |
336 if (first_char == '/') { | 336 if (first_char == '/') { |
337 CFX_ByteString name = | 337 CFX_ByteString name = |
338 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)); | 338 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)); |
339 return new CPDF_Name(m_pPool ? m_pPool->Intern(name) : name); | 339 return new CPDF_Name(m_pPool, name); |
340 } | 340 } |
341 | 341 |
342 if (first_char == '(') { | 342 if (first_char == '(') { |
343 CFX_ByteString str = ReadString(); | 343 CFX_ByteString str = ReadString(); |
344 return new CPDF_String(m_pPool ? m_pPool->Intern(str) : str, false); | 344 return new CPDF_String(m_pPool, str, false); |
345 } | 345 } |
346 | 346 |
347 if (first_char == '<') { | 347 if (first_char == '<') { |
348 if (m_WordSize == 1) | 348 if (m_WordSize == 1) |
349 return new CPDF_String(ReadHexString(), true); | 349 return new CPDF_String(m_pPool, ReadHexString(), true); |
350 | 350 |
351 CPDF_Dictionary* pDict = new CPDF_Dictionary(m_pPool); | 351 CPDF_Dictionary* pDict = new CPDF_Dictionary(m_pPool); |
352 while (1) { | 352 while (1) { |
353 GetNextWord(bIsNumber); | 353 GetNextWord(bIsNumber); |
354 if (m_WordSize == 2 && m_WordBuffer[0] == '>') | 354 if (m_WordSize == 2 && m_WordBuffer[0] == '>') |
355 break; | 355 break; |
356 | 356 |
357 if (!m_WordSize || m_WordBuffer[0] != '/') { | 357 if (!m_WordSize || m_WordBuffer[0] != '/') { |
358 delete pDict; | 358 delete pDict; |
359 return nullptr; | 359 return nullptr; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
617 | 617 |
618 if (buf.GetLength() > kMaxStringLength) | 618 if (buf.GetLength() > kMaxStringLength) |
619 return CFX_ByteString(buf.GetBuffer(), kMaxStringLength); | 619 return CFX_ByteString(buf.GetBuffer(), kMaxStringLength); |
620 | 620 |
621 return buf.MakeString(); | 621 return buf.MakeString(); |
622 } | 622 } |
623 | 623 |
624 bool CPDF_StreamParser::PositionIsInBounds() const { | 624 bool CPDF_StreamParser::PositionIsInBounds() const { |
625 return m_Pos < m_Size; | 625 return m_Pos < m_Size; |
626 } | 626 } |
OLD | NEW |