Index: core/fpdfapi/page/cpdf_image.cpp |
diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp |
index feafde3b36bcfcaa8158fab2fb8602a013802463..97969551c6541632623916f9c5b94671243a1255 100644 |
--- a/core/fpdfapi/page/cpdf_image.cpp |
+++ b/core/fpdfapi/page/cpdf_image.cpp |
@@ -247,8 +247,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(); |
@@ -275,7 +277,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(); |