| Index: core/fpdfapi/page/cpdf_image.cpp
|
| diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp
|
| index 97969551c6541632623916f9c5b94671243a1255..a0109f22a8d0c8f99853fa6c82eb59c1d8f38986 100644
|
| --- a/core/fpdfapi/page/cpdf_image.cpp
|
| +++ b/core/fpdfapi/page/cpdf_image.cpp
|
| @@ -219,8 +219,9 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) {
|
| pCS->AddNew<CPDF_Name>("Indexed");
|
| pCS->AddNew<CPDF_Name>("DeviceRGB");
|
| pCS->AddNew<CPDF_Number>(iPalette - 1);
|
| - uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3);
|
| - uint8_t* ptr = pColorTable;
|
| + std::unique_ptr<uint8_t, FxFreeDeleter> pColorTable(
|
| + FX_Alloc2D(uint8_t, iPalette, 3));
|
| + uint8_t* ptr = pColorTable.get();
|
| for (int32_t i = 0; i < iPalette; i++) {
|
| uint32_t argb = pBitmap->GetPaletteArgb(i);
|
| ptr[0] = (uint8_t)(argb >> 16);
|
| @@ -231,7 +232,7 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) {
|
| auto pNewDict =
|
| pdfium::MakeUnique<CPDF_Dictionary>(m_pDocument->GetByteStringPool());
|
| CPDF_Stream* pCTS = m_pDocument->NewIndirect<CPDF_Stream>(
|
| - pColorTable, iPalette * 3, std::move(pNewDict));
|
| + std::move(pColorTable), iPalette * 3, std::move(pNewDict));
|
| pCS->AddNew<CPDF_Reference>(m_pDocument, pCTS->GetObjNum());
|
| pDict->SetNewFor<CPDF_Reference>("ColorSpace", m_pDocument,
|
| pCS->GetObjNum());
|
| @@ -254,7 +255,7 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) {
|
| if (pMaskBitmap) {
|
| int32_t maskWidth = pMaskBitmap->GetWidth();
|
| int32_t maskHeight = pMaskBitmap->GetHeight();
|
| - uint8_t* mask_buf = nullptr;
|
| + std::unique_ptr<uint8_t, FxFreeDeleter> mask_buf;
|
| FX_STRSIZE mask_size = 0;
|
| auto pMaskDict =
|
| pdfium::MakeUnique<CPDF_Dictionary>(m_pDocument->GetByteStringPool());
|
| @@ -265,16 +266,16 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) {
|
| pMaskDict->SetNewFor<CPDF_Name>("ColorSpace", "DeviceGray");
|
| pMaskDict->SetNewFor<CPDF_Number>("BitsPerComponent", 8);
|
| if (pMaskBitmap->GetFormat() != FXDIB_1bppMask) {
|
| - mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth);
|
| + mask_buf.reset(FX_Alloc2D(uint8_t, maskHeight, maskWidth));
|
| mask_size = maskHeight * maskWidth; // Safe since checked alloc returned.
|
| for (int32_t a = 0; a < maskHeight; a++) {
|
| - FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a),
|
| - maskWidth);
|
| + FXSYS_memcpy(mask_buf.get() + a * maskWidth,
|
| + pMaskBitmap->GetScanline(a), maskWidth);
|
| }
|
| }
|
| pMaskDict->SetNewFor<CPDF_Number>("Length", mask_size);
|
| CPDF_Stream* pNewStream = m_pDocument->NewIndirect<CPDF_Stream>(
|
| - mask_buf, mask_size, std::move(pMaskDict));
|
| + std::move(mask_buf), mask_size, std::move(pMaskDict));
|
| pDict->SetNewFor<CPDF_Reference>("SMask", m_pDocument,
|
| pNewStream->GetObjNum());
|
| }
|
|
|