diff options
author | Lei Zhang <thestig@chromium.org> | 2015-12-18 17:01:09 -0800 |
---|---|---|
committer | Lei Zhang <thestig@chromium.org> | 2015-12-18 17:01:09 -0800 |
commit | aedd4555ec1a80121f176586cb72180337e4ccd8 (patch) | |
tree | 75a23e3962e47e0eb1cdf0472bd69729bf406029 /core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | |
parent | 4b84705b63eacb0140186983d55113f48d093f16 (diff) | |
download | pdfium-aedd4555ec1a80121f176586cb72180337e4ccd8.tar.xz |
Merge to XFA: Cleanup CJBig2_HuffmanTable and friends.
TBR=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1536923002 .
(cherry picked from commit 9c061e2dfb22a0e321728b73c8650eded8828d90)
Review URL: https://codereview.chromium.org/1539023002 .
Diffstat (limited to 'core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp')
-rw-r--r-- | core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp index cbbe6af70e..4cbecd017a 100644 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp @@ -21,33 +21,26 @@ int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable* pTable, while (1) { FX_DWORD nTmp; if (m_pStream->read1Bit(&nTmp) == -1) - return -1; + break; nVal = (nVal << 1) | nTmp; ++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)) + for (FX_DWORD i = 0; i < pTable->Size(); ++i) { + if (pTable->GetPREFLEN()[i] == nBits && pTable->GetCODES()[i] == nVal) { + if (pTable->IsHTOOB() && i == pTable->Size() - 1) return JBIG2_OOB; - if (m_pStream->readNBits(pTable->RANGELEN[i], &nTmp) == -1) + if (m_pStream->readNBits(pTable->GetRANGELEN()[i], &nTmp) == -1) return -1; - if (pTable->HTOOB) { - if (i == pTable->NTEMP - 3) - *nResult = pTable->RANGELOW[i] - nTmp; - else - *nResult = pTable->RANGELOW[i] + nTmp; - return 0; - } - - if (i == pTable->NTEMP - 2) - *nResult = pTable->RANGELOW[i] - nTmp; + FX_DWORD offset = pTable->IsHTOOB() ? 3 : 2; + if (i == pTable->Size() - offset) + *nResult = pTable->GetRANGELOW()[i] - nTmp; else - *nResult = pTable->RANGELOW[i] + nTmp; + *nResult = pTable->GetRANGELOW()[i] + nTmp; return 0; } } } - return -2; + return -1; } |