Remove dead code from CFX_DIBBase::ConvertBuffer() and related code
ConvertBuffer() and several related functions cannot actually return
false. Use CHECKs / NOTREACHED_NORETURN() to ensure those conditions are
never reached, and then delete impossible code branches.
Change-Id: Ic5dca905d03fa422864f5c93bfb7f953d3d71332
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/115490
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/dib/cfx_dibbase.cpp b/core/fxge/dib/cfx_dibbase.cpp
index ef4f970..ae25e72 100644
--- a/core/fxge/dib/cfx_dibbase.cpp
+++ b/core/fxge/dib/cfx_dibbase.cpp
@@ -495,7 +495,7 @@
}
}
-bool ConvertBuffer_8bppMask(int bpp,
+void ConvertBuffer_8bppMask(int bpp,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
@@ -512,7 +512,7 @@
ConvertBuffer_1bppMask2Gray(dest_buf, dest_pitch, width, height,
pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 8:
if (pSrcBitmap->HasPalette()) {
ConvertBuffer_8bppPlt2Gray(dest_buf, dest_pitch, width, height,
@@ -521,18 +521,18 @@
ConvertBuffer_8bppMask2Gray(dest_buf, dest_pitch, width, height,
pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 24:
case 32:
ConvertBuffer_Rgb2Gray(dest_buf, dest_pitch, width, height, pSrcBitmap,
src_left, src_top);
- return true;
+ break;
default:
- return false;
+ NOTREACHED_NORETURN();
}
}
-bool ConvertBuffer_Rgb(int bpp,
+void ConvertBuffer_Rgb(int bpp,
FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
@@ -550,7 +550,7 @@
ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, width,
height, pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 8:
if (pSrcBitmap->HasPalette()) {
ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, width,
@@ -559,21 +559,21 @@
ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, width,
height, pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 24:
ConvertBuffer_24bppRgb2Rgb24(dest_buf, dest_pitch, width, height,
pSrcBitmap, src_left, src_top);
- return true;
+ break;
case 32:
ConvertBuffer_32bppRgb2Rgb24(dest_buf, dest_pitch, width, height,
pSrcBitmap, src_left, src_top);
- return true;
+ break;
default:
- return false;
+ NOTREACHED_NORETURN();
}
}
-bool ConvertBuffer_Argb(int bpp,
+void ConvertBuffer_Argb(int bpp,
FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
@@ -591,7 +591,7 @@
ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, width,
height, pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 8:
if (pSrcBitmap->HasPalette()) {
ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, width,
@@ -600,14 +600,14 @@
ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, width,
height, pSrcBitmap, src_left, src_top);
}
- return true;
+ break;
case 24:
case 32:
ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, pSrcBitmap,
src_left, src_top);
- return true;
+ break;
default:
- return false;
+ NOTREACHED_NORETURN();
}
}
@@ -947,14 +947,11 @@
RetainPtr<const CFX_DIBBase> holder(this);
DataVector<uint32_t> pal_8bpp;
- if (!ConvertBuffer(dest_format, pClone->GetWritableBuffer(),
- pClone->GetPitch(), m_Width, m_Height, holder, 0, 0,
- &pal_8bpp)) {
- return nullptr;
- }
- if (!pal_8bpp.empty())
+ ConvertBuffer(dest_format, pClone->GetWritableBuffer(), pClone->GetPitch(),
+ m_Width, m_Height, holder, 0, 0, &pal_8bpp);
+ if (!pal_8bpp.empty()) {
pClone->SetPalette(pal_8bpp);
-
+ }
return pClone;
}
@@ -1075,7 +1072,7 @@
}
// static
-bool CFX_DIBBase::ConvertBuffer(FXDIB_Format dest_format,
+void CFX_DIBBase::ConvertBuffer(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
@@ -1085,39 +1082,41 @@
int src_top,
DataVector<uint32_t>* pal) {
FXDIB_Format src_format = pSrcBitmap->GetFormat();
- const int bpp = GetBppFromFormat(src_format);
+ const int src_bpp = GetBppFromFormat(src_format);
switch (dest_format) {
case FXDIB_Format::k8bppMask: {
- return ConvertBuffer_8bppMask(bpp, dest_buf, dest_pitch, width, height,
- pSrcBitmap, src_left, src_top);
+ ConvertBuffer_8bppMask(src_bpp, dest_buf, dest_pitch, width, height,
+ pSrcBitmap, src_left, src_top);
+ break;
}
case FXDIB_Format::k8bppRgb: {
- const bool bpp_1_or_8 = (bpp == 1 || bpp == 8);
- if (bpp_1_or_8 && !pSrcBitmap->HasPalette()) {
- return ConvertBuffer(FXDIB_Format::k8bppMask, dest_buf, dest_pitch,
- width, height, pSrcBitmap, src_left, src_top, pal);
- }
- pal->resize(256);
- if (bpp_1_or_8 && pSrcBitmap->HasPalette()) {
- ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height,
- pSrcBitmap, src_left, src_top, *pal);
- return true;
- }
- if (bpp >= 24) {
+ if (src_bpp == 1 || src_bpp == 8) {
+ if (pSrcBitmap->HasPalette()) {
+ pal->resize(256);
+ ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height,
+ pSrcBitmap, src_left, src_top, *pal);
+ } else {
+ ConvertBuffer(FXDIB_Format::k8bppMask, dest_buf, dest_pitch, width,
+ height, pSrcBitmap, src_left, src_top, pal);
+ }
+ } else {
+ CHECK_GE(src_bpp, 24);
+ pal->resize(256);
ConvertBuffer_Rgb2PltRgb8(dest_buf, dest_pitch, width, height,
pSrcBitmap, src_left, src_top, *pal);
- return true;
}
- return false;
+ break;
}
case FXDIB_Format::kRgb: {
- return ConvertBuffer_Rgb(bpp, dest_format, dest_buf, dest_pitch, width,
- height, pSrcBitmap, src_left, src_top);
+ ConvertBuffer_Rgb(src_bpp, dest_format, dest_buf, dest_pitch, width,
+ height, pSrcBitmap, src_left, src_top);
+ break;
}
case FXDIB_Format::kArgb:
case FXDIB_Format::kRgb32: {
- return ConvertBuffer_Argb(bpp, dest_format, dest_buf, dest_pitch, width,
- height, pSrcBitmap, src_left, src_top);
+ ConvertBuffer_Argb(src_bpp, dest_format, dest_buf, dest_pitch, width,
+ height, pSrcBitmap, src_left, src_top);
+ break;
}
default:
NOTREACHED_NORETURN();
diff --git a/core/fxge/dib/cfx_dibbase.h b/core/fxge/dib/cfx_dibbase.h
index 8baeb28..8fe3e35 100644
--- a/core/fxge/dib/cfx_dibbase.h
+++ b/core/fxge/dib/cfx_dibbase.h
@@ -105,7 +105,7 @@
CFX_DIBBase();
~CFX_DIBBase() override;
- static bool ConvertBuffer(FXDIB_Format dest_format,
+ static void ConvertBuffer(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
diff --git a/core/fxge/dib/cfx_dibitmap.cpp b/core/fxge/dib/cfx_dibitmap.cpp
index 8a1eb61..5dd88b8 100644
--- a/core/fxge/dib/cfx_dibitmap.cpp
+++ b/core/fxge/dib/cfx_dibitmap.cpp
@@ -249,9 +249,10 @@
pdfium::span<uint8_t> dest_buf = GetWritableBuffer().subspan(
dest_top * m_Pitch + static_cast<uint32_t>(offset.ValueOrDie()));
- DataVector<uint32_t> d_plt;
- return ConvertBuffer(dest_format, dest_buf, m_Pitch, width, height, source,
- src_left, src_top, &d_plt);
+ DataVector<uint32_t> unused_dest_palette;
+ ConvertBuffer(dest_format, dest_buf, m_Pitch, width, height, source, src_left,
+ src_top, &unused_dest_palette);
+ return true;
}
void CFX_DIBitmap::TransferWithMultipleBPP(int dest_left,
@@ -959,10 +960,8 @@
}
RetainPtr<CFX_DIBBase> holder(this);
DataVector<uint32_t> pal_8bpp;
- if (!ConvertBuffer(dest_format, {dest_buf.get(), dest_buf_size}, dest_pitch,
- m_Width, m_Height, holder, 0, 0, &pal_8bpp)) {
- return false;
- }
+ ConvertBuffer(dest_format, {dest_buf.get(), dest_buf_size}, dest_pitch,
+ m_Width, m_Height, holder, 0, 0, &pal_8bpp);
m_palette = std::move(pal_8bpp);
m_pBuffer = std::move(dest_buf);