From 7aed76f53137a71491040c776ab2f8931e91061b Mon Sep 17 00:00:00 2001 From: weili Date: Thu, 26 May 2016 18:13:58 -0700 Subject: Fix a bug which may cause infinite loop When the condition is "status == FXCODEC_STATUS_DECODE_TOBECONTINUE" while |status| never gets updated in the loop, it would enter infinite loop. Also, since Start_decode_MMR() never returns FXCODEC_STATUS_DECODE_TOBECONTINUE, there is no point to check on the return value for that. Review-Url: https://codereview.chromium.org/2013263002 --- core/fxcodec/jbig2/JBig2_PddProc.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'core/fxcodec/jbig2/JBig2_PddProc.cpp') diff --git a/core/fxcodec/jbig2/JBig2_PddProc.cpp b/core/fxcodec/jbig2/JBig2_PddProc.cpp index 12f66c3b7d..679a87a036 100644 --- a/core/fxcodec/jbig2/JBig2_PddProc.cpp +++ b/core/fxcodec/jbig2/JBig2_PddProc.cpp @@ -42,9 +42,8 @@ CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( } FXCODEC_STATUS status = pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbContext, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) + status = pGRD->Continue_decode(pPause); if (!BHDC) return nullptr; @@ -70,10 +69,7 @@ CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, pGRD->MMR = HDMMR; pGRD->GBW = (GRAYMAX + 1) * HDPW; pGRD->GBH = HDPH; - FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } + pGRD->Start_decode_MMR(&BHDC, pStream, nullptr); if (!BHDC) return nullptr; -- cgit v1.2.3