Index: core/fpdfapi/page/cpdf_image.cpp |
diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp |
index a17222e3430d39ccf58afc1809d2d9ae436a0909..34a7fa348d4f431cd7567c65203d3c1df3b53728 100644 |
--- a/core/fpdfapi/page/cpdf_image.cpp |
+++ b/core/fpdfapi/page/cpdf_image.cpp |
@@ -230,8 +230,10 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) { |
bCopyWithoutAlpha = false; |
} |
- const CFX_DIBitmap* pMaskBitmap = |
- pBitmap->HasAlpha() ? pBitmap->GetAlphaMask() : nullptr; |
+ std::unique_ptr<CFX_DIBitmap> pMaskBitmap; |
+ if (pBitmap->HasAlpha()) |
+ pMaskBitmap = pBitmap->CloneAlphaMask(); |
+ |
if (pMaskBitmap) { |
int32_t maskWidth = pMaskBitmap->GetWidth(); |
int32_t maskHeight = pMaskBitmap->GetHeight(); |
@@ -258,7 +260,6 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) { |
mask_buf, mask_size, std::move(pMaskDict)); |
pDict->SetNewFor<CPDF_Reference>("SMask", m_pDocument, |
pNewStream->GetObjNum()); |
- delete pMaskBitmap; |
} |
uint8_t* src_buf = pBitmap->GetBuffer(); |