summaryrefslogtreecommitdiff
path: root/core/fpdfapi/render/cpdf_imageloader.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2017-05-23 14:31:00 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-05-23 21:48:51 +0000
commit258909cda89cb478ed44d56ca3e88d86f9dd4733 (patch)
tree59bde9f676b2faca74a64f130099663e14fd4b90 /core/fpdfapi/render/cpdf_imageloader.cpp
parentabc83aa862050642a90ed109074a9cf1018fee9b (diff)
downloadpdfium-258909cda89cb478ed44d56ca3e88d86f9dd4733.tar.xz
Make CPDF_ImageCacheEntry retain CPDF_Image
CPDF_PageRenderCache::m_ImageCache is a map from streams to an image cache entry containing a clump of data associated with the stream. Oddly, the clump includes the stream key (which we already have in order to get to the clump), but worse doesn't ensure the existence of the CPDF_Image object which (maybe) owns the stream key in question. So replace the stream with a retained ptr to the image. Also renamed an unrelated member to avoid confusion with the CPDF_Object in play. Bug: 724460 Change-Id: Id13d2c246918d4ff78c12b5bdb927f99c3f5e4e1 Reviewed-on: https://pdfium-review.googlesource.com/5771 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/render/cpdf_imageloader.cpp')
-rw-r--r--core/fpdfapi/render/cpdf_imageloader.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/core/fpdfapi/render/cpdf_imageloader.cpp b/core/fpdfapi/render/cpdf_imageloader.cpp
index bf540c610d..53b6009c15 100644
--- a/core/fpdfapi/render/cpdf_imageloader.cpp
+++ b/core/fpdfapi/render/cpdf_imageloader.cpp
@@ -18,7 +18,7 @@ CPDF_ImageLoader::CPDF_ImageLoader()
: m_MatteColor(0),
m_bCached(false),
m_pCache(nullptr),
- m_pImage(nullptr) {}
+ m_pImageObject(nullptr) {}
CPDF_ImageLoader::~CPDF_ImageLoader() {}
@@ -29,14 +29,13 @@ bool CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
bool bLoadMask,
CPDF_RenderStatus* pRenderStatus) {
m_pCache = pCache;
- m_pImage = const_cast<CPDF_ImageObject*>(pImage);
+ m_pImageObject = const_cast<CPDF_ImageObject*>(pImage);
bool ret;
if (pCache) {
- ret =
- pCache->StartGetCachedBitmap(m_pImage->GetImage()->GetStream(), bStdCS,
- GroupFamily, bLoadMask, pRenderStatus);
+ ret = pCache->StartGetCachedBitmap(m_pImageObject->GetImage(), bStdCS,
+ GroupFamily, bLoadMask, pRenderStatus);
} else {
- ret = m_pImage->GetImage()->StartLoadDIBSource(
+ ret = m_pImageObject->GetImage()->StartLoadDIBSource(
pRenderStatus->m_pFormResource, pRenderStatus->m_pPageResource, bStdCS,
GroupFamily, bLoadMask);
}
@@ -48,7 +47,7 @@ bool CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
bool CPDF_ImageLoader::Continue(IFX_Pause* pPause,
CPDF_RenderStatus* pRenderStatus) {
bool ret = m_pCache ? m_pCache->Continue(pPause, pRenderStatus)
- : m_pImage->GetImage()->Continue(pPause);
+ : m_pImageObject->GetImage()->Continue(pPause);
if (!ret)
HandleFailure();
return ret;
@@ -63,7 +62,7 @@ void CPDF_ImageLoader::HandleFailure() {
m_MatteColor = entry->m_MatteColor;
return;
}
- CFX_RetainPtr<CPDF_Image> pImage = m_pImage->GetImage();
+ CFX_RetainPtr<CPDF_Image> pImage = m_pImageObject->GetImage();
m_bCached = false;
m_pBitmap = pImage->DetachBitmap();
m_pMask = pImage->DetachMask();