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 = |
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 { |