diff options
author | Lei Zhang <thestig@chromium.org> | 2015-10-16 16:22:37 -0700 |
---|---|---|
committer | Lei Zhang <thestig@chromium.org> | 2015-10-16 16:22:37 -0700 |
commit | c40ccaff017691b7d31e0597863bfb954aebd739 (patch) | |
tree | 4f5f09c672393e130037826256ab182e2d2ae7f5 /core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | |
parent | a725bc9a3525256976c112b2b5a429a119cf9b69 (diff) | |
download | pdfium-c40ccaff017691b7d31e0597863bfb954aebd739.tar.xz |
Merge to XFA: Fix a bunch of sign mismatch warnings.
Also remove some gotos and move code into an anonymous namespace.
And then do the partial revert to avoid size_t going negative.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1356373003 .
Review URL: https://codereview.chromium.org/1400723002 .
(cherry picked from commit d03ba8d1a5928e8f3f6bd7da063b53b0bc40abfd)
(cherry picked from commit a398ca611d1925182ff6a4e8b2b43c277c364dc0)
Review URL: https://codereview.chromium.org/1406373002 .
Diffstat (limited to 'core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp')
-rw-r--r-- | core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp index 61a45bebae..cbbe6af70e 100644 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp @@ -8,47 +8,44 @@ #include "JBig2_Define.h" -CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream) { - m_pStream = pStream; +CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream) + : m_pStream(pStream) { } + CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() {} + int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable* pTable, int* nResult) { - int i; int nVal = 0; int nBits = 0; - FX_DWORD nTmp; while (1) { - if (m_pStream->read1Bit(&nTmp) == -1) { + FX_DWORD nTmp; + if (m_pStream->read1Bit(&nTmp) == -1) return -1; - } + nVal = (nVal << 1) | nTmp; - nBits++; - for (i = 0; i < pTable->NTEMP; i++) { + ++nBits; + for (FX_DWORD i = 0; i < pTable->NTEMP; ++i) { if ((pTable->PREFLEN[i] == nBits) && (pTable->CODES[i] == nVal)) { - if ((pTable->HTOOB == 1) && (i == pTable->NTEMP - 1)) { + if ((pTable->HTOOB == 1) && (i == pTable->NTEMP - 1)) return JBIG2_OOB; - } - if (m_pStream->readNBits(pTable->RANGELEN[i], &nTmp) == -1) { + + if (m_pStream->readNBits(pTable->RANGELEN[i], &nTmp) == -1) return -1; - } + if (pTable->HTOOB) { - if (i == pTable->NTEMP - 3) { + if (i == pTable->NTEMP - 3) *nResult = pTable->RANGELOW[i] - nTmp; - return 0; - } else { + else *nResult = pTable->RANGELOW[i] + nTmp; - return 0; - } - } else { - if (i == pTable->NTEMP - 2) { - *nResult = pTable->RANGELOW[i] - nTmp; - return 0; - } else { - *nResult = pTable->RANGELOW[i] + nTmp; - return 0; - } + return 0; } + + if (i == pTable->NTEMP - 2) + *nResult = pTable->RANGELOW[i] - nTmp; + else + *nResult = pTable->RANGELOW[i] + nTmp; + return 0; } } } |