Chromium Code Reviews| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
| index 27cc8688cc256378f3e90da37234c75da7612d73..cbbeee60247de79759ba8e0a91097376ed972612 100644 |
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
| @@ -845,9 +845,15 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
| FX_POSITION pos = pTrailer->GetStartPos(); |
| while (pos) { |
| CFX_ByteString key; |
| - CPDF_Object* pObj = |
| + CPDF_Object* pElement = |
|
Lei Zhang
2015/10/26 21:58:22
This is a shadow variable. This function is a bit
|
| pTrailer->GetNextElement(pos, key); |
| - m_pTrailer->SetAt(key, pObj->Clone(), m_pDocument); |
| + FX_DWORD dwObjNum = pElement->GetObjNum(); |
| + if (dwObjNum) { |
| + m_pTrailer->SetAtReference(key, m_pDocument, |
| + dwObjNum); |
| + } else { |
| + m_pTrailer->SetAt(key, pElement->Clone()); |
| + } |
| } |
| pObj->Release(); |
| } else { |