| 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..3bd3cbb96faed7ae23cec83dcaef92a81c750201 100644
|
| --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp
|
| +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp
|
| @@ -32,25 +32,22 @@ CJBig2_HuffmanTable::~CJBig2_HuffmanTable() {
|
| void CJBig2_HuffmanTable::init() {
|
| HTOOB = FALSE;
|
| NTEMP = 0;
|
| - CODES = NULL;
|
| - PREFLEN = NULL;
|
| - RANGELEN = NULL;
|
| - RANGELOW = NULL;
|
| + CODES = nullptr;
|
| + PREFLEN = nullptr;
|
| + RANGELEN = nullptr;
|
| + RANGELOW = nullptr;
|
| }
|
| int CJBig2_HuffmanTable::parseFromStandardTable(const JBig2TableLine* pTable,
|
| int nLines,
|
| FX_BOOL bHTOOB) {
|
| - int CURLEN, LENMAX, CURCODE, CURTEMP, i;
|
| - int* LENCOUNT;
|
| - int* FIRSTCODE;
|
| HTOOB = bHTOOB;
|
| NTEMP = nLines;
|
| CODES = FX_Alloc(int, NTEMP);
|
| PREFLEN = FX_Alloc(int, NTEMP);
|
| RANGELEN = FX_Alloc(int, NTEMP);
|
| RANGELOW = FX_Alloc(int, NTEMP);
|
| - LENMAX = 0;
|
| - for (i = 0; i < NTEMP; i++) {
|
| + int LENMAX = 0;
|
| + for (FX_DWORD i = 0; i < NTEMP; ++i) {
|
| PREFLEN[i] = pTable[i].PREFLEN;
|
| RANGELEN[i] = pTable[i].RANDELEN;
|
| RANGELOW[i] = pTable[i].RANGELOW;
|
| @@ -58,19 +55,19 @@ int CJBig2_HuffmanTable::parseFromStandardTable(const JBig2TableLine* pTable,
|
| LENMAX = PREFLEN[i];
|
| }
|
| }
|
| - LENCOUNT = FX_Alloc(int, LENMAX + 1);
|
| + int* LENCOUNT = FX_Alloc(int, LENMAX + 1);
|
| JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
|
| - FIRSTCODE = FX_Alloc(int, LENMAX + 1);
|
| - for (i = 0; i < NTEMP; i++) {
|
| - LENCOUNT[PREFLEN[i]]++;
|
| - }
|
| - CURLEN = 1;
|
| + int* FIRSTCODE = FX_Alloc(int, LENMAX + 1);
|
| + for (FX_DWORD i = 0; i < NTEMP; ++i)
|
| + ++LENCOUNT[PREFLEN[i]];
|
| +
|
| + 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];
|
| + FX_DWORD CURTEMP = 0;
|
| while (CURTEMP < NTEMP) {
|
| if (PREFLEN[CURTEMP] == CURLEN) {
|
| CODES[CURTEMP] = CURCODE;
|
| @@ -93,80 +90,77 @@ 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;
|
| + ++NTEMP;
|
| 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;
|
| - }
|
| - NTEMP = NTEMP + 1;
|
| + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1)
|
| + return FALSE;
|
| +
|
| + ++NTEMP;
|
| }
|
| CODES = FX_Alloc(int, NTEMP);
|
| - LENMAX = 0;
|
| - for (int i = 0; i < NTEMP; i++) {
|
| + int LENMAX = 0;
|
| + for (FX_DWORD 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));
|
| JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1));
|
| - FIRSTCODE = FX_Alloc(int, (LENMAX + 1));
|
| - for (int i = 0; i < NTEMP; i++) {
|
| + int* FIRSTCODE = FX_Alloc(int, (LENMAX + 1));
|
| + for (FX_DWORD 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];
|
| + FX_DWORD CURTEMP = 0;
|
| while (CURTEMP < NTEMP) {
|
| if (PREFLEN[CURTEMP] == CURLEN) {
|
| CODES[CURTEMP] = CURCODE;
|
| @@ -179,6 +173,4 @@ int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) {
|
| FX_Free(LENCOUNT);
|
| FX_Free(FIRSTCODE);
|
| return TRUE;
|
| -failed:
|
| - return FALSE;
|
| }
|
|
|