diff options
author | Lei Zhang <thestig@chromium.org> | 2018-08-09 08:05:00 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-08-09 08:05:00 +0000 |
commit | 74557b1b4746bc80283f0acf248242fdcab71deb (patch) | |
tree | f3eb45cc5c574d450537c4632a17dd3bc77c8bde /core/fpdfapi/parser/cpdf_cross_ref_table.cpp | |
parent | f765805983d157e9a21d7202ba49148f24d226f3 (diff) | |
download | pdfium-74557b1b4746bc80283f0acf248242fdcab71deb.tar.xz |
Revert "Rework of CPDF_Parser::GetLastObjNum."
This reverts commit b07deb3fc1f54bd700a66df573bfcbc4bcc1d787.
Reason for revert: Causing https://crbug.com/870467
Original change's description:
> Rework of CPDF_Parser::GetLastObjNum.
>
> Change-Id: I0481774858a9d9823580e1207807e35be8a9eea9
> Reviewed-on: https://pdfium-review.googlesource.com/36270
> Reviewed-by: Lei Zhang <thestig@chromium.org>
> Commit-Queue: Art Snake <art-snake@yandex-team.ru>
TBR=thestig@chromium.org,art-snake@yandex-team.ru
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I58e23c752a582c21be8ba45e3538e63c0fa64504
Reviewed-on: https://pdfium-review.googlesource.com/39810
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_cross_ref_table.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_cross_ref_table.cpp | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/core/fpdfapi/parser/cpdf_cross_ref_table.cpp b/core/fpdfapi/parser/cpdf_cross_ref_table.cpp index d25c5e0167..77c0e8136c 100644 --- a/core/fpdfapi/parser/cpdf_cross_ref_table.cpp +++ b/core/fpdfapi/parser/cpdf_cross_ref_table.cpp @@ -4,21 +4,11 @@ #include "core/fpdfapi/parser/cpdf_cross_ref_table.h" -#include <algorithm> #include <utility> #include "core/fpdfapi/parser/cpdf_dictionary.h" -#include "core/fpdfapi/parser/cpdf_number.h" #include "core/fpdfapi/parser/cpdf_parser.h" -namespace { - -constexpr char kXRefStm[] = "XRefStm"; -constexpr char kPrev[] = "Prev"; -constexpr char kSize[] = "Size"; - -} // namespace - // static std::unique_ptr<CPDF_CrossRefTable> CPDF_CrossRefTable::MergeUp( std::unique_ptr<CPDF_CrossRefTable> current, @@ -112,24 +102,16 @@ void CPDF_CrossRefTable::Update( UpdateTrailer(std::move(new_cross_ref->trailer_)); } -void CPDF_CrossRefTable::ShrinkObjectMap(uint32_t max_size) { - if (max_size == 0) { +void CPDF_CrossRefTable::ShrinkObjectMap(uint32_t objnum) { + if (objnum == 0) { objects_info_.clear(); return; } - objects_info_.erase(objects_info_.lower_bound(max_size), objects_info_.end()); -} - -uint32_t CPDF_CrossRefTable::GetSize() const { - const uint32_t size_from_objects_num = - objects_info_.empty() ? 0 : (objects_info_.rbegin()->first + 1); - const int size_from_trailer = trailer() ? trailer()->GetIntegerFor(kSize) : 0; - if (size_from_trailer <= 0) - return size_from_objects_num; + objects_info_.erase(objects_info_.lower_bound(objnum), objects_info_.end()); - return std::max(static_cast<uint32_t>(size_from_trailer), - size_from_objects_num); + if (!pdfium::ContainsKey(objects_info_, objnum - 1)) + objects_info_[objnum - 1].pos = 0; } void CPDF_CrossRefTable::UpdateInfo( @@ -167,11 +149,8 @@ void CPDF_CrossRefTable::UpdateTrailer( return; } - new_trailer->RemoveFor(kXRefStm); - new_trailer->RemoveFor(kPrev); - new_trailer->SetNewFor<CPDF_Number>( - kSize, std::max(trailer_->GetIntegerFor(kSize), - new_trailer->GetIntegerFor(kSize))); + new_trailer->SetFor("XRefStm", trailer_->RemoveFor("XRefStm")); + new_trailer->SetFor("Prev", trailer_->RemoveFor("Prev")); for (auto it = new_trailer->begin(); it != new_trailer->end();) { const ByteString key = it->first; |