Index: core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
index 7ac5210291e5ae4fd37169f1238d949eb6af721d..7414f0a5dec39f50379c6bd1f39b6c6b947dcd8d 100644 |
--- a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
+++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
@@ -990,19 +990,22 @@ CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict, |
return nullptr; |
CFX_DIBitmap& bitmap = *bitmap_device.GetBitmap(); |
- CPDF_Object* pCSObj = nullptr; |
- CPDF_ColorSpace* pCS = nullptr; |
+ int color_space_family = 0; |
if (bLuminosity) { |
CPDF_Array* pBC = pSMaskDict->GetArrayFor("BC"); |
FX_ARGB back_color = 0xff000000; |
if (pBC) { |
+ CPDF_Object* pCSObj = nullptr; |
CPDF_Dictionary* pDict = pGroup->GetDict(); |
- if (pDict && pDict->GetDictFor("Group")) |
+ if (pDict && pDict->GetDictFor("Group")) { |
pCSObj = pDict->GetDictFor("Group")->GetDirectObjectFor("CS"); |
- else |
- pCSObj = nullptr; |
- pCS = m_pContext->GetDocument()->LoadColorSpace(pCSObj); |
+ } |
+ const CPDF_ColorSpace* pCS = |
+ m_pContext->GetDocument()->LoadColorSpace(pCSObj); |
if (pCS) { |
+ // Store Color Space Family to use in CPDF_RenderStatus::Initialize. |
+ color_space_family = pCS->GetFamily(); |
+ |
FX_FLOAT R, G, B; |
uint32_t comps = 8; |
if (pCS->CountComponents() > comps) { |
@@ -1039,7 +1042,7 @@ CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict, |
CPDF_RenderStatus status; |
status.Initialize(m_pContext, &bitmap_device, nullptr, nullptr, nullptr, |
nullptr, &options, 0, m_bDropObjects, pFormResource, TRUE, |
- nullptr, 0, pCS ? pCS->GetFamily() : 0, bLuminosity); |
+ nullptr, 0, color_space_family, bLuminosity); |
status.RenderObjectList(&form, &matrix); |
std::unique_ptr<CFX_DIBitmap> pMask(new CFX_DIBitmap); |
if (!pMask->Create(width, height, FXDIB_8bppMask)) |