Don't implement CPDF_DIB::GetBuffer() Stops returning a non-empty buffer from CPDF_DIB::GetBuffer(), as CPDF_DIB currently does not fulfill the contract that GetBuffer() and GetScanline() return equivalent data. Bug: pdfium:2050 Change-Id: I92fdad47bcce8cd726ec7031de8c51c2a0cee5c7 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/108850 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: K. Moon <kmoon@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp index f1c2755..7559eeb 100644 --- a/core/fpdfapi/page/cpdf_dib.cpp +++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -1133,8 +1133,10 @@ } pdfium::span<const uint8_t> CPDF_DIB::GetBuffer() const { - return m_pCachedBitmap ? m_pCachedBitmap->GetBuffer() - : pdfium::span<const uint8_t>(); + // TODO(crbug.com/pdfium/2050): Reuse buffer from `m_pCachedBitmap`. This + // doesn't work right now because `LoadJpxBitmap()` doesn't generate a bitmap + // in the same format as `GetScanline()`. + return pdfium::span<const uint8_t>(); } pdfium::span<const uint8_t> CPDF_DIB::GetScanline(int line) const {
diff --git a/core/fpdfapi/page/cpdf_pageimagecache.cpp b/core/fpdfapi/page/cpdf_pageimagecache.cpp index e470169..cba999b 100644 --- a/core/fpdfapi/page/cpdf_pageimagecache.cpp +++ b/core/fpdfapi/page/cpdf_pageimagecache.cpp
@@ -110,11 +110,8 @@ bool realize_hint) { #if defined(_SKIA_SUPPORT_) if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) { - // TODO(crbug.com/pdfium/2050): Ignore `realize_hint`, as `RealizeSkImage()` - // doesn't benefit from it. The current behavior masks a bug in `CPDF_DIB` - // in which `GetBuffer()` and `GetScanline()` don't give the same answer. - return pdfium::MakeRetain<CachedImage>(realize_hint ? image->Realize() - : std::move(image)); + // Ignore `realize_hint`, as `RealizeSkImage()` doesn't benefit from it. + return pdfium::MakeRetain<CachedImage>(std::move(image)); } #endif // defined(_SKIA_SUPPORT_) return realize_hint ? image->Realize() : image;