Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1090)

Side by Side Diff: core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/cpdf_syntax_parser.h" 7 #include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 10 matching lines...) Expand all
21 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h" 21 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h"
22 #include "core/fpdfapi/fpdf_parser/ipdf_crypto_handler.h" 22 #include "core/fpdfapi/fpdf_parser/ipdf_crypto_handler.h"
23 #include "core/fpdfapi/include/cpdf_modulemgr.h" 23 #include "core/fpdfapi/include/cpdf_modulemgr.h"
24 #include "core/fxcrt/include/fx_ext.h" 24 #include "core/fxcrt/include/fx_ext.h"
25 #include "third_party/base/numerics/safe_math.h" 25 #include "third_party/base/numerics/safe_math.h"
26 26
27 namespace { 27 namespace {
28 28
29 struct SearchTagRecord { 29 struct SearchTagRecord {
30 const char* m_pTag; 30 const char* m_pTag;
31 FX_DWORD m_Len; 31 uint32_t m_Len;
32 FX_DWORD m_Offset; 32 uint32_t m_Offset;
33 }; 33 };
34 34
35 } // namespace 35 } // namespace
36 36
37 // static 37 // static
38 int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0; 38 int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0;
39 39
40 CPDF_SyntaxParser::CPDF_SyntaxParser() 40 CPDF_SyntaxParser::CPDF_SyntaxParser()
41 : m_MetadataObjnum(0), 41 : m_MetadataObjnum(0),
42 m_pFileAccess(nullptr), 42 m_pFileAccess(nullptr),
(...skipping 10 matching lines...) Expand all
53 return GetNextChar(ch); 53 return GetNextChar(ch);
54 } 54 }
55 55
56 FX_BOOL CPDF_SyntaxParser::GetNextChar(uint8_t& ch) { 56 FX_BOOL CPDF_SyntaxParser::GetNextChar(uint8_t& ch) {
57 FX_FILESIZE pos = m_Pos + m_HeaderOffset; 57 FX_FILESIZE pos = m_Pos + m_HeaderOffset;
58 if (pos >= m_FileLen) 58 if (pos >= m_FileLen)
59 return FALSE; 59 return FALSE;
60 60
61 if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { 61 if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) {
62 FX_FILESIZE read_pos = pos; 62 FX_FILESIZE read_pos = pos;
63 FX_DWORD read_size = m_BufSize; 63 uint32_t read_size = m_BufSize;
64 if ((FX_FILESIZE)read_size > m_FileLen) 64 if ((FX_FILESIZE)read_size > m_FileLen)
65 read_size = (FX_DWORD)m_FileLen; 65 read_size = (uint32_t)m_FileLen;
66 66
67 if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { 67 if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) {
68 if (m_FileLen < (FX_FILESIZE)read_size) { 68 if (m_FileLen < (FX_FILESIZE)read_size) {
69 read_pos = 0; 69 read_pos = 0;
70 read_size = (FX_DWORD)m_FileLen; 70 read_size = (uint32_t)m_FileLen;
71 } else { 71 } else {
72 read_pos = m_FileLen - read_size; 72 read_pos = m_FileLen - read_size;
73 } 73 }
74 } 74 }
75 75
76 if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) 76 if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size))
77 return FALSE; 77 return FALSE;
78 78
79 m_BufOffset = read_pos; 79 m_BufOffset = read_pos;
80 } 80 }
81 ch = m_pFileBuf[pos - m_BufOffset]; 81 ch = m_pFileBuf[pos - m_BufOffset];
82 m_Pos++; 82 m_Pos++;
83 return TRUE; 83 return TRUE;
84 } 84 }
85 85
86 FX_BOOL CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) { 86 FX_BOOL CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) {
87 pos += m_HeaderOffset; 87 pos += m_HeaderOffset;
88 if (pos >= m_FileLen) 88 if (pos >= m_FileLen)
89 return FALSE; 89 return FALSE;
90 90
91 if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { 91 if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) {
92 FX_FILESIZE read_pos; 92 FX_FILESIZE read_pos;
93 if (pos < (FX_FILESIZE)m_BufSize) 93 if (pos < (FX_FILESIZE)m_BufSize)
94 read_pos = 0; 94 read_pos = 0;
95 else 95 else
96 read_pos = pos - m_BufSize + 1; 96 read_pos = pos - m_BufSize + 1;
97 97
98 FX_DWORD read_size = m_BufSize; 98 uint32_t read_size = m_BufSize;
99 if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { 99 if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) {
100 if (m_FileLen < (FX_FILESIZE)read_size) { 100 if (m_FileLen < (FX_FILESIZE)read_size) {
101 read_pos = 0; 101 read_pos = 0;
102 read_size = (FX_DWORD)m_FileLen; 102 read_size = (uint32_t)m_FileLen;
103 } else { 103 } else {
104 read_pos = m_FileLen - read_size; 104 read_pos = m_FileLen - read_size;
105 } 105 }
106 } 106 }
107 107
108 if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) 108 if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size))
109 return FALSE; 109 return FALSE;
110 110
111 m_BufOffset = read_pos; 111 m_BufOffset = read_pos;
112 } 112 }
113 ch = m_pFileBuf[pos - m_BufOffset]; 113 ch = m_pFileBuf[pos - m_BufOffset];
114 return TRUE; 114 return TRUE;
115 } 115 }
116 116
117 FX_BOOL CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, FX_DWORD size) { 117 FX_BOOL CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, uint32_t size) {
118 if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size)) 118 if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size))
119 return FALSE; 119 return FALSE;
120 m_Pos += size; 120 m_Pos += size;
121 return TRUE; 121 return TRUE;
122 } 122 }
123 123
124 void CPDF_SyntaxParser::GetNextWordInternal(bool* bIsNumber) { 124 void CPDF_SyntaxParser::GetNextWordInternal(bool* bIsNumber) {
125 m_WordSize = 0; 125 m_WordSize = 0;
126 if (bIsNumber) 126 if (bIsNumber)
127 *bIsNumber = true; 127 *bIsNumber = true;
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 CFX_ByteString CPDF_SyntaxParser::GetNextWord(bool* bIsNumber) { 368 CFX_ByteString CPDF_SyntaxParser::GetNextWord(bool* bIsNumber) {
369 GetNextWordInternal(bIsNumber); 369 GetNextWordInternal(bIsNumber);
370 return CFX_ByteString((const FX_CHAR*)m_WordBuffer, m_WordSize); 370 return CFX_ByteString((const FX_CHAR*)m_WordBuffer, m_WordSize);
371 } 371 }
372 372
373 CFX_ByteString CPDF_SyntaxParser::GetKeyword() { 373 CFX_ByteString CPDF_SyntaxParser::GetKeyword() {
374 return GetNextWord(nullptr); 374 return GetNextWord(nullptr);
375 } 375 }
376 376
377 CPDF_Object* CPDF_SyntaxParser::GetObject(CPDF_IndirectObjectHolder* pObjList, 377 CPDF_Object* CPDF_SyntaxParser::GetObject(CPDF_IndirectObjectHolder* pObjList,
378 FX_DWORD objnum, 378 uint32_t objnum,
379 FX_DWORD gennum, 379 uint32_t gennum,
380 FX_BOOL bDecrypt) { 380 FX_BOOL bDecrypt) {
381 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); 381 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth);
382 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) 382 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth)
383 return nullptr; 383 return nullptr;
384 384
385 FX_FILESIZE SavedPos = m_Pos; 385 FX_FILESIZE SavedPos = m_Pos;
386 bool bIsNumber; 386 bool bIsNumber;
387 CFX_ByteString word = GetNextWord(&bIsNumber); 387 CFX_ByteString word = GetNextWord(&bIsNumber);
388 if (word.GetLength() == 0) 388 if (word.GetLength() == 0)
389 return nullptr; 389 return nullptr;
390 390
391 if (bIsNumber) { 391 if (bIsNumber) {
392 FX_FILESIZE SavedPos = m_Pos; 392 FX_FILESIZE SavedPos = m_Pos;
393 CFX_ByteString nextword = GetNextWord(&bIsNumber); 393 CFX_ByteString nextword = GetNextWord(&bIsNumber);
394 if (bIsNumber) { 394 if (bIsNumber) {
395 CFX_ByteString nextword2 = GetNextWord(nullptr); 395 CFX_ByteString nextword2 = GetNextWord(nullptr);
396 if (nextword2 == "R") { 396 if (nextword2 == "R") {
397 FX_DWORD objnum = FXSYS_atoui(word); 397 uint32_t objnum = FXSYS_atoui(word);
398 return new CPDF_Reference(pObjList, objnum); 398 return new CPDF_Reference(pObjList, objnum);
399 } 399 }
400 } 400 }
401 m_Pos = SavedPos; 401 m_Pos = SavedPos;
402 return new CPDF_Number(word); 402 return new CPDF_Number(word);
403 } 403 }
404 404
405 if (word == "true" || word == "false") 405 if (word == "true" || word == "false")
406 return new CPDF_Boolean(word == "true"); 406 return new CPDF_Boolean(word == "true");
407 407
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 } 493 }
494 494
495 if (word == ">>") 495 if (word == ">>")
496 m_Pos = SavedPos; 496 m_Pos = SavedPos;
497 497
498 return nullptr; 498 return nullptr;
499 } 499 }
500 500
501 CPDF_Object* CPDF_SyntaxParser::GetObjectByStrict( 501 CPDF_Object* CPDF_SyntaxParser::GetObjectByStrict(
502 CPDF_IndirectObjectHolder* pObjList, 502 CPDF_IndirectObjectHolder* pObjList,
503 FX_DWORD objnum, 503 uint32_t objnum,
504 FX_DWORD gennum) { 504 uint32_t gennum) {
505 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); 505 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth);
506 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) 506 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth)
507 return nullptr; 507 return nullptr;
508 508
509 FX_FILESIZE SavedPos = m_Pos; 509 FX_FILESIZE SavedPos = m_Pos;
510 bool bIsNumber; 510 bool bIsNumber;
511 CFX_ByteString word = GetNextWord(&bIsNumber); 511 CFX_ByteString word = GetNextWord(&bIsNumber);
512 if (word.GetLength() == 0) 512 if (word.GetLength() == 0)
513 return nullptr; 513 return nullptr;
514 514
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 if (byte1 == '\r' && byte2 == '\n') 621 if (byte1 == '\r' && byte2 == '\n')
622 return 2; 622 return 2;
623 623
624 if (byte1 == '\r' || byte1 == '\n') 624 if (byte1 == '\r' || byte1 == '\n')
625 return 1; 625 return 1;
626 626
627 return 0; 627 return 0;
628 } 628 }
629 629
630 CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict, 630 CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict,
631 FX_DWORD objnum, 631 uint32_t objnum,
632 FX_DWORD gennum) { 632 uint32_t gennum) {
633 CPDF_Object* pLenObj = pDict->GetElement("Length"); 633 CPDF_Object* pLenObj = pDict->GetElement("Length");
634 FX_FILESIZE len = -1; 634 FX_FILESIZE len = -1;
635 CPDF_Reference* pLenObjRef = ToReference(pLenObj); 635 CPDF_Reference* pLenObjRef = ToReference(pLenObj);
636 636
637 bool differingObjNum = !pLenObjRef || (pLenObjRef->GetObjList() && 637 bool differingObjNum = !pLenObjRef || (pLenObjRef->GetObjList() &&
638 pLenObjRef->GetRefObjNum() != objnum); 638 pLenObjRef->GetRefObjNum() != objnum);
639 if (pLenObj && differingObjNum) 639 if (pLenObj && differingObjNum)
640 len = pLenObj->GetInteger(); 640 len = pLenObj->GetInteger();
641 641
642 // Locate the start of stream. 642 // Locate the start of stream.
643 ToNextLine(); 643 ToNextLine();
644 FX_FILESIZE streamStartPos = m_Pos; 644 FX_FILESIZE streamStartPos = m_Pos;
645 645
646 const CFX_ByteStringC kEndStreamStr("endstream"); 646 const CFX_ByteStringC kEndStreamStr("endstream");
647 const CFX_ByteStringC kEndObjStr("endobj"); 647 const CFX_ByteStringC kEndObjStr("endobj");
648 648
649 IPDF_CryptoHandler* pCryptoHandler = 649 IPDF_CryptoHandler* pCryptoHandler =
650 objnum == (FX_DWORD)m_MetadataObjnum ? nullptr : m_pCryptoHandler.get(); 650 objnum == (uint32_t)m_MetadataObjnum ? nullptr : m_pCryptoHandler.get();
651 if (!pCryptoHandler) { 651 if (!pCryptoHandler) {
652 FX_BOOL bSearchForKeyword = TRUE; 652 FX_BOOL bSearchForKeyword = TRUE;
653 if (len >= 0) { 653 if (len >= 0) {
654 pdfium::base::CheckedNumeric<FX_FILESIZE> pos = m_Pos; 654 pdfium::base::CheckedNumeric<FX_FILESIZE> pos = m_Pos;
655 pos += len; 655 pos += len;
656 if (pos.IsValid() && pos.ValueOrDie() < m_FileLen) 656 if (pos.IsValid() && pos.ValueOrDie() < m_FileLen)
657 m_Pos = pos.ValueOrDie(); 657 m_Pos = pos.ValueOrDie();
658 658
659 m_Pos += ReadEOLMarkers(m_Pos); 659 m_Pos += ReadEOLMarkers(m_Pos);
660 FXSYS_memset(m_WordBuffer, 0, kEndStreamStr.GetLength() + 1); 660 FXSYS_memset(m_WordBuffer, 0, kEndStreamStr.GetLength() + 1);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 if (m_WordSize == static_cast<unsigned int>(kEndObjStr.GetLength()) && 775 if (m_WordSize == static_cast<unsigned int>(kEndObjStr.GetLength()) &&
776 numMarkers != 0 && 776 numMarkers != 0 &&
777 FXSYS_memcmp(m_WordBuffer, kEndObjStr.GetPtr(), kEndObjStr.GetLength()) == 777 FXSYS_memcmp(m_WordBuffer, kEndObjStr.GetPtr(), kEndObjStr.GetLength()) ==
778 0) { 778 0) {
779 m_Pos = streamStartPos; 779 m_Pos = streamStartPos;
780 } 780 }
781 return pStream; 781 return pStream;
782 } 782 }
783 783
784 void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess, 784 void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess,
785 FX_DWORD HeaderOffset) { 785 uint32_t HeaderOffset) {
786 FX_Free(m_pFileBuf); 786 FX_Free(m_pFileBuf);
787 787
788 m_pFileBuf = FX_Alloc(uint8_t, m_BufSize); 788 m_pFileBuf = FX_Alloc(uint8_t, m_BufSize);
789 m_HeaderOffset = HeaderOffset; 789 m_HeaderOffset = HeaderOffset;
790 m_FileLen = pFileAccess->GetSize(); 790 m_FileLen = pFileAccess->GetSize();
791 m_Pos = 0; 791 m_Pos = 0;
792 m_pFileAccess = pFileAccess; 792 m_pFileAccess = pFileAccess;
793 m_BufOffset = 0; 793 m_BufOffset = 0;
794 pFileAccess->ReadBlock( 794 pFileAccess->ReadBlock(
795 m_pFileBuf, 0, 795 m_pFileBuf, 0,
796 (size_t)((FX_FILESIZE)m_BufSize > m_FileLen ? m_FileLen : m_BufSize)); 796 (size_t)((FX_FILESIZE)m_BufSize > m_FileLen ? m_FileLen : m_BufSize));
797 } 797 }
798 798
799 uint32_t CPDF_SyntaxParser::GetDirectNum() { 799 uint32_t CPDF_SyntaxParser::GetDirectNum() {
800 bool bIsNumber; 800 bool bIsNumber;
801 GetNextWordInternal(&bIsNumber); 801 GetNextWordInternal(&bIsNumber);
802 if (!bIsNumber) 802 if (!bIsNumber)
803 return 0; 803 return 0;
804 804
805 m_WordBuffer[m_WordSize] = 0; 805 m_WordBuffer[m_WordSize] = 0;
806 return FXSYS_atoui(reinterpret_cast<const FX_CHAR*>(m_WordBuffer)); 806 return FXSYS_atoui(reinterpret_cast<const FX_CHAR*>(m_WordBuffer));
807 } 807 }
808 808
809 bool CPDF_SyntaxParser::IsWholeWord(FX_FILESIZE startpos, 809 bool CPDF_SyntaxParser::IsWholeWord(FX_FILESIZE startpos,
810 FX_FILESIZE limit, 810 FX_FILESIZE limit,
811 const CFX_ByteStringC& tag, 811 const CFX_ByteStringC& tag,
812 FX_BOOL checkKeyword) { 812 FX_BOOL checkKeyword) {
813 const FX_DWORD taglen = tag.GetLength(); 813 const uint32_t taglen = tag.GetLength();
814 814
815 bool bCheckLeft = !PDFCharIsDelimiter(tag[0]) && !PDFCharIsWhitespace(tag[0]); 815 bool bCheckLeft = !PDFCharIsDelimiter(tag[0]) && !PDFCharIsWhitespace(tag[0]);
816 bool bCheckRight = !PDFCharIsDelimiter(tag[taglen - 1]) && 816 bool bCheckRight = !PDFCharIsDelimiter(tag[taglen - 1]) &&
817 !PDFCharIsWhitespace(tag[taglen - 1]); 817 !PDFCharIsWhitespace(tag[taglen - 1]);
818 818
819 uint8_t ch; 819 uint8_t ch;
820 if (bCheckRight && startpos + (int32_t)taglen <= limit && 820 if (bCheckRight && startpos + (int32_t)taglen <= limit &&
821 GetCharAt(startpos + (int32_t)taglen, ch)) { 821 GetCharAt(startpos + (int32_t)taglen, ch)) {
822 if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) || 822 if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) ||
823 (checkKeyword && PDFCharIsDelimiter(ch))) { 823 (checkKeyword && PDFCharIsDelimiter(ch))) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 int32_t CPDF_SyntaxParser::SearchMultiWord(const CFX_ByteStringC& tags, 907 int32_t CPDF_SyntaxParser::SearchMultiWord(const CFX_ByteStringC& tags,
908 FX_BOOL bWholeWord, 908 FX_BOOL bWholeWord,
909 FX_FILESIZE limit) { 909 FX_FILESIZE limit) {
910 int32_t ntags = 1; 910 int32_t ntags = 1;
911 for (int i = 0; i < tags.GetLength(); ++i) { 911 for (int i = 0; i < tags.GetLength(); ++i) {
912 if (tags[i] == 0) 912 if (tags[i] == 0)
913 ++ntags; 913 ++ntags;
914 } 914 }
915 915
916 std::vector<SearchTagRecord> patterns(ntags); 916 std::vector<SearchTagRecord> patterns(ntags);
917 FX_DWORD start = 0; 917 uint32_t start = 0;
918 FX_DWORD itag = 0; 918 uint32_t itag = 0;
919 FX_DWORD max_len = 0; 919 uint32_t max_len = 0;
920 for (int i = 0; i <= tags.GetLength(); ++i) { 920 for (int i = 0; i <= tags.GetLength(); ++i) {
921 if (tags[i] == 0) { 921 if (tags[i] == 0) {
922 FX_DWORD len = i - start; 922 uint32_t len = i - start;
923 max_len = std::max(len, max_len); 923 max_len = std::max(len, max_len);
924 patterns[itag].m_pTag = tags.GetCStr() + start; 924 patterns[itag].m_pTag = tags.GetCStr() + start;
925 patterns[itag].m_Len = len; 925 patterns[itag].m_Len = len;
926 patterns[itag].m_Offset = 0; 926 patterns[itag].m_Offset = 0;
927 start = i + 1; 927 start = i + 1;
928 ++itag; 928 ++itag;
929 } 929 }
930 } 930 }
931 931
932 const FX_FILESIZE pos_limit = m_Pos + limit; 932 const FX_FILESIZE pos_limit = m_Pos + limit;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 if (limit && m_Pos == limit) 981 if (limit && m_Pos == limit)
982 return -1; 982 return -1;
983 } 983 }
984 return -1; 984 return -1;
985 } 985 }
986 986
987 void CPDF_SyntaxParser::SetEncrypt( 987 void CPDF_SyntaxParser::SetEncrypt(
988 std::unique_ptr<IPDF_CryptoHandler> pCryptoHandler) { 988 std::unique_ptr<IPDF_CryptoHandler> pCryptoHandler) {
989 m_pCryptoHandler = std::move(pCryptoHandler); 989 m_pCryptoHandler = std::move(pCryptoHandler);
990 } 990 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h ('k') | core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698