| Index: core/fpdfapi/render/cpdf_renderstatus.cpp
|
| diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
|
| index 126e04662e0fb9b5c20d4fd056a1c45cd9275a36..88dbb030cea4c60ec5118d7b36b17c3dee8a3b2a 100644
|
| --- a/core/fpdfapi/render/cpdf_renderstatus.cpp
|
| +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
|
| @@ -46,6 +46,7 @@
|
| #include "core/fpdfapi/render/render_int.h"
|
| #include "core/fpdfdoc/cpdf_occontext.h"
|
| #include "core/fxcodec/fx_codec.h"
|
| +#include "core/fxcrt/cfx_maybe_owned.h"
|
| #include "core/fxcrt/fx_safe_types.h"
|
| #include "core/fxge/cfx_fxgedevice.h"
|
| #include "core/fxge/cfx_graphstatedata.h"
|
| @@ -2265,7 +2266,7 @@ void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern,
|
| std::unique_ptr<CFX_DIBitmap> pEnlargedBitmap =
|
| DrawPatternBitmap(m_pContext->GetDocument(), m_pContext->GetPageCache(),
|
| pPattern, pObj2Device, 8, 8, m_Options.m_Flags);
|
| - pPatternBitmap.reset(pEnlargedBitmap->StretchTo(width, height));
|
| + pPatternBitmap = pEnlargedBitmap->StretchTo(width, height);
|
| } else {
|
| pPatternBitmap = DrawPatternBitmap(
|
| m_pContext->GetDocument(), m_pContext->GetPageCache(), pPattern,
|
| @@ -2439,10 +2440,8 @@ void CPDF_RenderStatus::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap,
|
| FX_RECT rect(left, top, left + pDIBitmap->GetWidth(),
|
| top + pDIBitmap->GetHeight());
|
| rect.Intersect(m_pDevice->GetClipBox());
|
| - CFX_DIBitmap* pClone = nullptr;
|
| - bool bClone = false;
|
| + CFX_MaybeOwned<CFX_DIBitmap> pClone;
|
| if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) {
|
| - bClone = true;
|
| pClone = m_pDevice->GetBackDrop()->Clone(&rect);
|
| CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap();
|
| pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(),
|
| @@ -2459,17 +2458,13 @@ void CPDF_RenderStatus::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap,
|
| pClone = pDIBitmap;
|
| }
|
| if (m_pDevice->GetBackDrop()) {
|
| - m_pDevice->SetDIBits(pClone, rect.left, rect.top);
|
| + m_pDevice->SetDIBits(pClone.Get(), rect.left, rect.top);
|
| } else {
|
| - if (pDIBitmap->IsAlphaMask()) {
|
| + if (pDIBitmap->IsAlphaMask())
|
| return;
|
| - }
|
| m_pDevice->SetDIBitsWithBlend(pDIBitmap, rect.left, rect.top,
|
| blend_mode);
|
| }
|
| - if (bClone) {
|
| - delete pClone;
|
| - }
|
| }
|
| return;
|
| }
|
|
|