From 11a6becb837a16972ffda8f94c8fb69ae100f3f4 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 25 Jul 2018 23:25:55 +0000 Subject: Remove some ASSERT (and cast) in favor of checked cases. Because it is a stronger pattern at runtime. These were found by essentially: grep -ni '\bassert\b.*type' Change-Id: I913d77139053e8980528597a6633e1859e5204c4 Reviewed-on: https://pdfium-review.googlesource.com/38890 Reviewed-by: Lei Zhang Commit-Queue: Tom Sepez --- core/fxcodec/codec/fx_codec_flate.cpp | 75 +++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 30 deletions(-) (limited to 'core/fxcodec/codec/fx_codec_flate.cpp') diff --git a/core/fxcodec/codec/fx_codec_flate.cpp b/core/fxcodec/codec/fx_codec_flate.cpp index eb68cedda5..39d27a4955 100644 --- a/core/fxcodec/codec/fx_codec_flate.cpp +++ b/core/fxcodec/codec/fx_codec_flate.cpp @@ -709,16 +709,21 @@ uint8_t* CCodec_FlatePredictorScanlineDecoder::v_GetNextLine() { } void CCodec_FlatePredictorScanlineDecoder::GetNextLineWithPredictedPitch() { - if (m_Predictor == PredictorType::kPng) { - FlateOutput(m_pFlate.get(), m_pPredictRaw, m_PredictPitch + 1); - PNG_PredictLine(m_pScanline.get(), m_pPredictRaw, m_pLastLine, - m_BitsPerComponent, m_Colors, m_Columns); - memcpy(m_pLastLine, m_pScanline.get(), m_PredictPitch); - } else { - ASSERT(m_Predictor == PredictorType::kFlate); - FlateOutput(m_pFlate.get(), m_pScanline.get(), m_Pitch); - TIFF_PredictLine(m_pScanline.get(), m_PredictPitch, m_bpc, m_nComps, - m_OutputWidth); + switch (m_Predictor) { + case PredictorType::kPng: + FlateOutput(m_pFlate.get(), m_pPredictRaw, m_PredictPitch + 1); + PNG_PredictLine(m_pScanline.get(), m_pPredictRaw, m_pLastLine, + m_BitsPerComponent, m_Colors, m_Columns); + memcpy(m_pLastLine, m_pScanline.get(), m_PredictPitch); + break; + case PredictorType::kFlate: + FlateOutput(m_pFlate.get(), m_pScanline.get(), m_Pitch); + TIFF_PredictLine(m_pScanline.get(), m_PredictPitch, m_bpc, m_nComps, + m_OutputWidth); + break; + default: + NOTREACHED(); + break; } } @@ -732,16 +737,21 @@ void CCodec_FlatePredictorScanlineDecoder::GetNextLineWithoutPredictedPitch() { bytes_to_go -= read_leftover; } while (bytes_to_go) { - if (m_Predictor == PredictorType::kPng) { - FlateOutput(m_pFlate.get(), m_pPredictRaw, m_PredictPitch + 1); - PNG_PredictLine(m_pPredictBuffer, m_pPredictRaw, m_pLastLine, - m_BitsPerComponent, m_Colors, m_Columns); - memcpy(m_pLastLine, m_pPredictBuffer, m_PredictPitch); - } else { - ASSERT(m_Predictor == PredictorType::kFlate); - FlateOutput(m_pFlate.get(), m_pPredictBuffer, m_PredictPitch); - TIFF_PredictLine(m_pPredictBuffer, m_PredictPitch, m_BitsPerComponent, - m_Colors, m_Columns); + switch (m_Predictor) { + case PredictorType::kPng: + FlateOutput(m_pFlate.get(), m_pPredictRaw, m_PredictPitch + 1); + PNG_PredictLine(m_pPredictBuffer, m_pPredictRaw, m_pLastLine, + m_BitsPerComponent, m_Colors, m_Columns); + memcpy(m_pLastLine, m_pPredictBuffer, m_PredictPitch); + break; + case PredictorType::kFlate: + FlateOutput(m_pFlate.get(), m_pPredictBuffer, m_PredictPitch); + TIFF_PredictLine(m_pPredictBuffer, m_PredictPitch, m_BitsPerComponent, + m_Colors, m_Columns); + break; + default: + NOTREACHED(); + break; } size_t read_bytes = m_PredictPitch > bytes_to_go ? bytes_to_go : m_PredictPitch; @@ -807,17 +817,22 @@ uint32_t CCodec_FlateModule::FlateOrLZWDecode(bool bLZW, FlateUncompress(pdfium::make_span(src_buf, src_size), estimated_size, *dest_buf, *dest_size, offset); } - if (predictor_type == PredictorType::kNone) - return offset; - bool ret; - if (predictor_type == PredictorType::kPng) { - ret = - PNG_Predictor(*dest_buf, *dest_size, Colors, BitsPerComponent, Columns); - } else { - ASSERT(predictor_type == PredictorType::kFlate); - ret = TIFF_Predictor(*dest_buf, *dest_size, Colors, BitsPerComponent, - Columns); + bool ret = false; + switch (predictor_type) { + case PredictorType::kNone: + return offset; + case PredictorType::kPng: + ret = PNG_Predictor(*dest_buf, *dest_size, Colors, BitsPerComponent, + Columns); + break; + case PredictorType::kFlate: + ret = TIFF_Predictor(*dest_buf, *dest_size, Colors, BitsPerComponent, + Columns); + break; + default: + NOTREACHED(); + break; } return ret ? offset : FX_INVALID_OFFSET; } -- cgit v1.2.3