Chromium Code Reviews| Index: core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| index 704145806afe21b36108cdb29ab1a33bcc49dda7..1909cda5311116c40c8ea3a256cb76975346e686 100644 |
| --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| @@ -93,80 +93,75 @@ int CJBig2_HuffmanTable::parseFromStandardTable(const JBig2TableLine* pTable, |
| RANGELOW = FX_Realloc(int, RANGELOW, nSize); \ |
| } |
| int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) { |
| - unsigned char HTPS, HTRS; |
| - FX_DWORD HTLOW, HTHIGH; |
| - FX_DWORD CURRANGELOW; |
| - FX_DWORD nSize = 16; |
| - int CURLEN, LENMAX, CURCODE, CURTEMP; |
| - int* LENCOUNT; |
| - int* FIRSTCODE; |
| unsigned char cTemp; |
| - if (pStream->read1Byte(&cTemp) == -1) { |
| - goto failed; |
| - } |
| + if (pStream->read1Byte(&cTemp) == -1) |
| + return FALSE; |
| + |
| HTOOB = cTemp & 0x01; |
| - HTPS = ((cTemp >> 1) & 0x07) + 1; |
| - HTRS = ((cTemp >> 4) & 0x07) + 1; |
| + unsigned char HTPS = ((cTemp >> 1) & 0x07) + 1; |
| + unsigned char HTRS = ((cTemp >> 4) & 0x07) + 1; |
| + FX_DWORD HTLOW; |
| + FX_DWORD HTHIGH; |
| if (pStream->readInteger(&HTLOW) == -1 || |
| pStream->readInteger(&HTHIGH) == -1 || HTLOW > HTHIGH) { |
| - goto failed; |
| + return FALSE; |
| } |
| + FX_DWORD nSize = 16; |
| PREFLEN = FX_Alloc(int, nSize); |
| RANGELEN = FX_Alloc(int, nSize); |
| RANGELOW = FX_Alloc(int, nSize); |
| - CURRANGELOW = HTLOW; |
| + FX_DWORD CURRANGELOW = HTLOW; |
| NTEMP = 0; |
| do { |
| HT_CHECK_MEMORY_ADJUST |
| if ((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) || |
| (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { |
| - goto failed; |
| + return FALSE; |
| } |
| RANGELOW[NTEMP] = CURRANGELOW; |
| CURRANGELOW = CURRANGELOW + (1 << RANGELEN[NTEMP]); |
| NTEMP = NTEMP + 1; |
| } while (CURRANGELOW < HTHIGH); |
| HT_CHECK_MEMORY_ADJUST |
| - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { |
| - goto failed; |
| - } |
| + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) |
| + return FALSE; |
| + |
| RANGELEN[NTEMP] = 32; |
| RANGELOW[NTEMP] = HTLOW - 1; |
| NTEMP = NTEMP + 1; |
| HT_CHECK_MEMORY_ADJUST |
| - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { |
| - goto failed; |
| - } |
| + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) |
| + return FALSE; |
| + |
| RANGELEN[NTEMP] = 32; |
| RANGELOW[NTEMP] = HTHIGH; |
| NTEMP = NTEMP + 1; |
| if (HTOOB) { |
| HT_CHECK_MEMORY_ADJUST |
| - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) { |
| - goto failed; |
| - } |
| + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) |
| + return FALSE; |
| NTEMP = NTEMP + 1; |
| } |
| CODES = FX_Alloc(int, NTEMP); |
| - LENMAX = 0; |
| + int LENMAX = 0; |
| for (int i = 0; i < NTEMP; i++) { |
| if (PREFLEN[i] > LENMAX) { |
| LENMAX = PREFLEN[i]; |
| } |
| } |
| - LENCOUNT = FX_Alloc(int, (LENMAX + 1)); |
| + int* LENCOUNT = FX_Alloc(int, (LENMAX + 1)); |
|
Tom Sepez
2015/10/05 16:34:32
maybe nonstd::unique_ptr here and at 154 to lose t
Lei Zhang
2015/10/07 07:51:12
Made them std::vectors.
|
| JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1)); |
| - FIRSTCODE = FX_Alloc(int, (LENMAX + 1)); |
| + int* FIRSTCODE = FX_Alloc(int, (LENMAX + 1)); |
| for (int i = 0; i < NTEMP; i++) { |
| LENCOUNT[PREFLEN[i]]++; |
| } |
| - CURLEN = 1; |
| + int CURLEN = 1; |
| FIRSTCODE[0] = 0; |
| LENCOUNT[0] = 0; |
| while (CURLEN <= LENMAX) { |
| FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1; |
| - CURCODE = FIRSTCODE[CURLEN]; |
| - CURTEMP = 0; |
| + int CURCODE = FIRSTCODE[CURLEN]; |
| + int CURTEMP = 0; |
| while (CURTEMP < NTEMP) { |
| if (PREFLEN[CURTEMP] == CURLEN) { |
| CODES[CURTEMP] = CURCODE; |
| @@ -179,6 +174,4 @@ int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) { |
| FX_Free(LENCOUNT); |
| FX_Free(FIRSTCODE); |
| return TRUE; |
| -failed: |
| - return FALSE; |
| } |