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

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp

Issue 1277043002: XFA: clang-format all pdfium code, again. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 4 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 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 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 <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "../../../include/fpdfapi/fpdf_module.h" 10 #include "../../../include/fpdfapi/fpdf_module.h"
(...skipping 2425 matching lines...) Expand 10 before | Expand all | Expand 10 after
2436 } 2436 }
2437 if (bTypeOnly) { 2437 if (bTypeOnly) {
2438 return (CPDF_Object*)PDFOBJ_INVALID; 2438 return (CPDF_Object*)PDFOBJ_INVALID;
2439 } 2439 }
2440 return NULL; 2440 return NULL;
2441 } 2441 }
2442 unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) { 2442 unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) {
2443 unsigned char byte1 = 0; 2443 unsigned char byte1 = 0;
2444 unsigned char byte2 = 0; 2444 unsigned char byte2 = 0;
2445 GetCharAt(pos, byte1); 2445 GetCharAt(pos, byte1);
2446 GetCharAt(pos+1, byte2); 2446 GetCharAt(pos + 1, byte2);
2447 unsigned int markers = 0; 2447 unsigned int markers = 0;
2448 if (byte1 == '\r' && byte2 == '\n') { 2448 if (byte1 == '\r' && byte2 == '\n') {
2449 markers = 2; 2449 markers = 2;
2450 } else if (byte1 == '\r' || byte1 == '\n') { 2450 } else if (byte1 == '\r' || byte1 == '\n') {
2451 markers = 1; 2451 markers = 1;
2452 } 2452 }
2453 return markers; 2453 return markers;
2454 } 2454 }
2455 CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict, 2455 CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict,
2456 PARSE_CONTEXT* pContext, 2456 PARSE_CONTEXT* pContext,
2457 FX_DWORD objnum, 2457 FX_DWORD objnum,
2458 FX_DWORD gennum) { 2458 FX_DWORD gennum) {
2459 CPDF_Object* pLenObj = pDict->GetElement(FX_BSTRC("Length")); 2459 CPDF_Object* pLenObj = pDict->GetElement(FX_BSTRC("Length"));
2460 FX_FILESIZE len = -1; 2460 FX_FILESIZE len = -1;
2461 if (pLenObj && ((pLenObj->GetType() != PDFOBJ_REFERENCE) || 2461 if (pLenObj && ((pLenObj->GetType() != PDFOBJ_REFERENCE) ||
2462 ((((CPDF_Reference*)pLenObj)->GetObjList()) && 2462 ((((CPDF_Reference*)pLenObj)->GetObjList()) &&
2463 ((CPDF_Reference*)pLenObj)->GetRefObjNum() != objnum))) { 2463 ((CPDF_Reference*)pLenObj)->GetRefObjNum() != objnum))) {
2464 len = pLenObj->GetInteger(); 2464 len = pLenObj->GetInteger();
2465 } 2465 }
2466 //Check whether end of line markers follow the keyword 'stream'. 2466 // Check whether end of line markers follow the keyword 'stream'.
2467 unsigned int numMarkers = ReadEOLMarkers(m_Pos); 2467 unsigned int numMarkers = ReadEOLMarkers(m_Pos);
2468 m_Pos += numMarkers; 2468 m_Pos += numMarkers;
2469 FX_FILESIZE streamStartPos = m_Pos; 2469 FX_FILESIZE streamStartPos = m_Pos;
2470 if (pContext) { 2470 if (pContext) {
2471 pContext->m_DataStart = streamStartPos; 2471 pContext->m_DataStart = streamStartPos;
2472 } 2472 }
2473 const unsigned int ENDSTREAM_LEN = sizeof("endstream") - 1; 2473 const unsigned int ENDSTREAM_LEN = sizeof("endstream") - 1;
2474 const unsigned int ENDOBJ_LEN = sizeof("endobj") - 1; 2474 const unsigned int ENDOBJ_LEN = sizeof("endobj") - 1;
2475 CPDF_CryptoHandler* pCryptoHandler = objnum == (FX_DWORD)m_MetadataObjnum ? nu llptr : m_pCryptoHandler; 2475 CPDF_CryptoHandler* pCryptoHandler =
2476 objnum == (FX_DWORD)m_MetadataObjnum ? nullptr : m_pCryptoHandler;
2476 if (!pCryptoHandler) { 2477 if (!pCryptoHandler) {
2477 FX_BOOL bSearchForKeyword = TRUE; 2478 FX_BOOL bSearchForKeyword = TRUE;
2478 unsigned int prevMarkers = 0; 2479 unsigned int prevMarkers = 0;
2479 unsigned int nextMarkers = 0; 2480 unsigned int nextMarkers = 0;
2480 if (len >= 0) { 2481 if (len >= 0) {
2481 pdfium::base::CheckedNumeric<FX_FILESIZE> pos = m_Pos; 2482 pdfium::base::CheckedNumeric<FX_FILESIZE> pos = m_Pos;
2482 pos += len; 2483 pos += len;
2483 if (pos.IsValid() && pos.ValueOrDie() < m_FileLen) { 2484 if (pos.IsValid() && pos.ValueOrDie() < m_FileLen) {
2484 m_Pos = pos.ValueOrDie(); 2485 m_Pos = pos.ValueOrDie();
2485 } 2486 }
2486 prevMarkers = ReadEOLMarkers(m_Pos); 2487 prevMarkers = ReadEOLMarkers(m_Pos);
2487 GetNextWord(); 2488 GetNextWord();
2488 nextMarkers = ReadEOLMarkers(m_Pos); 2489 nextMarkers = ReadEOLMarkers(m_Pos);
2489 if (m_WordSize == ENDSTREAM_LEN && prevMarkers != 0 && nextMarkers != 0 && 2490 if (m_WordSize == ENDSTREAM_LEN && prevMarkers != 0 && nextMarkers != 0 &&
2490 FXSYS_memcmp(m_WordBuffer, "endstream", ENDSTREAM_LEN) == 0) { 2491 FXSYS_memcmp(m_WordBuffer, "endstream", ENDSTREAM_LEN) == 0) {
2491 bSearchForKeyword = FALSE; 2492 bSearchForKeyword = FALSE;
2492 } 2493 }
2493 } 2494 }
2494 if (bSearchForKeyword) { 2495 if (bSearchForKeyword) {
2495 //If len is not available, len needs to be calculated 2496 // If len is not available, len needs to be calculated
2496 //by searching the keywords "endstream" or "endobj". 2497 // by searching the keywords "endstream" or "endobj".
2497 m_Pos = streamStartPos; 2498 m_Pos = streamStartPos;
2498 FX_FILESIZE endStreamOffset = 0; 2499 FX_FILESIZE endStreamOffset = 0;
2499 while (endStreamOffset >= 0) { 2500 while (endStreamOffset >= 0) {
2500 endStreamOffset = FindTag(FX_BSTRC("endstream"), 0); 2501 endStreamOffset = FindTag(FX_BSTRC("endstream"), 0);
2501 if (endStreamOffset < 0) { 2502 if (endStreamOffset < 0) {
2502 //Can't find any "endstream". 2503 // Can't find any "endstream".
2503 break; 2504 break;
2504 } 2505 }
2505 prevMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1); 2506 prevMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1);
2506 nextMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset + ENDSTREA M_LEN); 2507 nextMarkers =
2508 ReadEOLMarkers(streamStartPos + endStreamOffset + ENDSTREAM_LEN);
2507 if (prevMarkers != 0 && nextMarkers != 0) { 2509 if (prevMarkers != 0 && nextMarkers != 0) {
2508 //Stop searching when the keyword "endstream" is found. 2510 // Stop searching when the keyword "endstream" is found.
2509 break; 2511 break;
2510 } else { 2512 } else {
2511 unsigned char ch = 0x00; 2513 unsigned char ch = 0x00;
2512 GetCharAt(streamStartPos + endStreamOffset + ENDSTREAM_LEN, ch); 2514 GetCharAt(streamStartPos + endStreamOffset + ENDSTREAM_LEN, ch);
2513 if (ch == 0x09 || ch == 0x20) { 2515 if (ch == 0x09 || ch == 0x20) {
2514 //"endstream" is treated as a keyword 2516 //"endstream" is treated as a keyword
2515 //when it is followed by a tab or whitespace 2517 // when it is followed by a tab or whitespace
2516 break; 2518 break;
2517 } 2519 }
2518 } 2520 }
2519 m_Pos += ENDSTREAM_LEN; 2521 m_Pos += ENDSTREAM_LEN;
2520 } 2522 }
2521 m_Pos = streamStartPos; 2523 m_Pos = streamStartPos;
2522 FX_FILESIZE endObjOffset = 0; 2524 FX_FILESIZE endObjOffset = 0;
2523 while (endObjOffset >= 0) { 2525 while (endObjOffset >= 0) {
2524 endObjOffset = FindTag(FX_BSTRC("endobj"), 0); 2526 endObjOffset = FindTag(FX_BSTRC("endobj"), 0);
2525 if (endObjOffset < 0) { 2527 if (endObjOffset < 0) {
2526 //Can't find any "endobj". 2528 // Can't find any "endobj".
2527 break; 2529 break;
2528 } 2530 }
2529 prevMarkers = ReadEOLMarkers(streamStartPos + endObjOffset - 1); 2531 prevMarkers = ReadEOLMarkers(streamStartPos + endObjOffset - 1);
2530 nextMarkers = ReadEOLMarkers(streamStartPos + endObjOffset + ENDOBJ_LEN) ; 2532 nextMarkers =
2533 ReadEOLMarkers(streamStartPos + endObjOffset + ENDOBJ_LEN);
2531 if (prevMarkers != 0 && nextMarkers != 0) { 2534 if (prevMarkers != 0 && nextMarkers != 0) {
2532 //Stop searching when the keyword "endobj" is found. 2535 // Stop searching when the keyword "endobj" is found.
2533 break; 2536 break;
2534 } 2537 }
2535 m_Pos += ENDOBJ_LEN; 2538 m_Pos += ENDOBJ_LEN;
2536 } 2539 }
2537 if (endStreamOffset < 0 && endObjOffset < 0) { 2540 if (endStreamOffset < 0 && endObjOffset < 0) {
2538 //Can't find "endstream" or "endobj". 2541 // Can't find "endstream" or "endobj".
2539 return nullptr; 2542 return nullptr;
2540 } 2543 }
2541 if (endStreamOffset < 0 && endObjOffset >= 0) { 2544 if (endStreamOffset < 0 && endObjOffset >= 0) {
2542 //Correct the position of end stream. 2545 // Correct the position of end stream.
2543 endStreamOffset = endObjOffset; 2546 endStreamOffset = endObjOffset;
2544 } else if (endStreamOffset >= 0 && endObjOffset < 0) { 2547 } else if (endStreamOffset >= 0 && endObjOffset < 0) {
2545 //Correct the position of end obj. 2548 // Correct the position of end obj.
2546 endObjOffset = endStreamOffset; 2549 endObjOffset = endStreamOffset;
2547 } else if (endStreamOffset > endObjOffset) { 2550 } else if (endStreamOffset > endObjOffset) {
2548 endStreamOffset = endObjOffset; 2551 endStreamOffset = endObjOffset;
2549 } 2552 }
2550 len = endStreamOffset; 2553 len = endStreamOffset;
2551 numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 2); 2554 numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 2);
2552 if (numMarkers == 2) { 2555 if (numMarkers == 2) {
2553 len -= 2; 2556 len -= 2;
2554 } else { 2557 } else {
2555 numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1); 2558 numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1);
(...skipping 24 matching lines...) Expand all
2580 len = dest_buf.GetSize(); 2583 len = dest_buf.GetSize();
2581 dest_buf.DetachBuffer(); 2584 dest_buf.DetachBuffer();
2582 } 2585 }
2583 CPDF_Stream* pStream = new CPDF_Stream(pData, len, pDict); 2586 CPDF_Stream* pStream = new CPDF_Stream(pData, len, pDict);
2584 if (pContext) { 2587 if (pContext) {
2585 pContext->m_DataEnd = pContext->m_DataStart + len; 2588 pContext->m_DataEnd = pContext->m_DataStart + len;
2586 } 2589 }
2587 streamStartPos = m_Pos; 2590 streamStartPos = m_Pos;
2588 GetNextWord(); 2591 GetNextWord();
2589 numMarkers = ReadEOLMarkers(m_Pos); 2592 numMarkers = ReadEOLMarkers(m_Pos);
2590 if (m_WordSize == ENDOBJ_LEN && numMarkers != 0 && 2593 if (m_WordSize == ENDOBJ_LEN && numMarkers != 0 &&
2591 FXSYS_memcmp(m_WordBuffer, "endobj", ENDOBJ_LEN) == 0) { 2594 FXSYS_memcmp(m_WordBuffer, "endobj", ENDOBJ_LEN) == 0) {
2592 m_Pos = streamStartPos; 2595 m_Pos = streamStartPos;
2593 } 2596 }
2594 return pStream; 2597 return pStream;
2595 } 2598 }
2596 void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess, 2599 void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess,
2597 FX_DWORD HeaderOffset) { 2600 FX_DWORD HeaderOffset) {
2598 if (m_pFileBuf) { 2601 if (m_pFileBuf) {
2599 FX_Free(m_pFileBuf); 2602 FX_Free(m_pFileBuf);
2600 m_pFileBuf = NULL; 2603 m_pFileBuf = NULL;
2601 } 2604 }
(...skipping 2114 matching lines...) Expand 10 before | Expand all | Expand 10 after
4716 return FALSE; 4719 return FALSE;
4717 } 4720 }
4718 CPDF_PageNode::~CPDF_PageNode() { 4721 CPDF_PageNode::~CPDF_PageNode() {
4719 int32_t iSize = m_childNode.GetSize(); 4722 int32_t iSize = m_childNode.GetSize();
4720 for (int32_t i = 0; i < iSize; ++i) { 4723 for (int32_t i = 0; i < iSize; ++i) {
4721 CPDF_PageNode* pNode = (CPDF_PageNode*)m_childNode[i]; 4724 CPDF_PageNode* pNode = (CPDF_PageNode*)m_childNode[i];
4722 delete pNode; 4725 delete pNode;
4723 } 4726 }
4724 m_childNode.RemoveAll(); 4727 m_childNode.RemoveAll();
4725 } 4728 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698