| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <list> | 8 #include <list> |
| 9 #include "JBig2_Context.h" | 9 #include "JBig2_Context.h" |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 return; | 23 return; |
| 24 } | 24 } |
| 25 } | 25 } |
| 26 CJBig2_Context *CJBig2_Context::CreateContext(CJBig2_Module *pModule, uint8_t *p
GlobalData, FX_DWORD dwGlobalLength, | 26 CJBig2_Context *CJBig2_Context::CreateContext(CJBig2_Module *pModule, uint8_t *p
GlobalData, FX_DWORD dwGlobalLength, |
| 27 uint8_t *pData, FX_DWORD dwLength, int32_t nStreamType, std::list<CJBig2
_CachePair>* pSymbolDictCache, IFX_Pause* pPause) | 27 uint8_t *pData, FX_DWORD dwLength, int32_t nStreamType, std::list<CJBig2
_CachePair>* pSymbolDictCache, IFX_Pause* pPause) |
| 28 { | 28 { |
| 29 return new(pModule)CJBig2_Context(pGlobalData, dwGlobalLength, pData, dwLeng
th, nStreamType, pSymbolDictCache, pPause); | 29 return new(pModule)CJBig2_Context(pGlobalData, dwGlobalLength, pData, dwLeng
th, nStreamType, pSymbolDictCache, pPause); |
| 30 } | 30 } |
| 31 void CJBig2_Context::DestroyContext(CJBig2_Context *pContext) | 31 void CJBig2_Context::DestroyContext(CJBig2_Context *pContext) |
| 32 { | 32 { |
| 33 if(pContext) { | 33 delete pContext; |
| 34 delete pContext; | |
| 35 } | |
| 36 } | 34 } |
| 37 CJBig2_Context::CJBig2_Context(uint8_t *pGlobalData, FX_DWORD dwGlobalLength, | 35 CJBig2_Context::CJBig2_Context(uint8_t *pGlobalData, FX_DWORD dwGlobalLength, |
| 38 uint8_t *pData, FX_DWORD dwLength, int32_t nStrea
mType, std::list<CJBig2_CachePair>* pSymbolDictCache, IFX_Pause* pPause) | 36 uint8_t *pData, FX_DWORD dwLength, int32_t nStrea
mType, std::list<CJBig2_CachePair>* pSymbolDictCache, IFX_Pause* pPause) |
| 39 { | 37 { |
| 40 if(pGlobalData && (dwGlobalLength > 0)) { | 38 if(pGlobalData && (dwGlobalLength > 0)) { |
| 41 JBIG2_ALLOC(m_pGlobalContext, CJBig2_Context(NULL, 0, pGlobalData, dwGlo
balLength, | 39 JBIG2_ALLOC(m_pGlobalContext, CJBig2_Context(NULL, 0, pGlobalData, dwGlo
balLength, |
| 42 JBIG2_EMBED_STREAM, pSymbolDictCache, pPause)); | 40 JBIG2_EMBED_STREAM, pSymbolDictCache, pPause)); |
| 43 } else { | 41 } else { |
| 44 m_pGlobalContext = NULL; | 42 m_pGlobalContext = NULL; |
| 45 } | 43 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 56 m_pArithDecoder = NULL; | 54 m_pArithDecoder = NULL; |
| 57 m_pGRD = NULL; | 55 m_pGRD = NULL; |
| 58 m_gbContext = NULL; | 56 m_gbContext = NULL; |
| 59 m_pSegment = NULL; | 57 m_pSegment = NULL; |
| 60 m_dwOffset = 0; | 58 m_dwOffset = 0; |
| 61 m_ProcessiveStatus = FXCODEC_STATUS_FRAME_READY; | 59 m_ProcessiveStatus = FXCODEC_STATUS_FRAME_READY; |
| 62 m_pSymbolDictCache = pSymbolDictCache; | 60 m_pSymbolDictCache = pSymbolDictCache; |
| 63 } | 61 } |
| 64 CJBig2_Context::~CJBig2_Context() | 62 CJBig2_Context::~CJBig2_Context() |
| 65 { | 63 { |
| 66 if(m_pArithDecoder) { | 64 delete m_pArithDecoder; |
| 67 delete m_pArithDecoder; | |
| 68 } | |
| 69 m_pArithDecoder = NULL; | 65 m_pArithDecoder = NULL; |
| 70 if(m_pGRD) { | 66 delete m_pGRD; |
| 71 delete m_pGRD; | |
| 72 } | |
| 73 m_pGRD = NULL; | 67 m_pGRD = NULL; |
| 74 if(m_gbContext) { | 68 if(m_gbContext) { |
| 75 m_pModule->JBig2_Free(m_gbContext); | 69 m_pModule->JBig2_Free(m_gbContext); |
| 76 } | 70 } |
| 77 m_gbContext = NULL; | 71 m_gbContext = NULL; |
| 78 if(m_pGlobalContext) { | 72 delete m_pGlobalContext; |
| 79 delete m_pGlobalContext; | |
| 80 } | |
| 81 m_pGlobalContext = NULL; | 73 m_pGlobalContext = NULL; |
| 82 if(m_pPageInfoList) { | 74 delete m_pPageInfoList; |
| 83 delete m_pPageInfoList; | |
| 84 } | |
| 85 m_pPageInfoList = NULL; | 75 m_pPageInfoList = NULL; |
| 86 if(m_bBufSpecified && m_pPage) { | 76 if(m_bBufSpecified) { |
| 87 delete m_pPage; | 77 delete m_pPage; |
| 88 } | 78 } |
| 89 m_pPage = NULL; | 79 m_pPage = NULL; |
| 90 if(m_pStream) { | 80 delete m_pStream; |
| 91 delete m_pStream; | |
| 92 } | |
| 93 m_pStream = NULL; | 81 m_pStream = NULL; |
| 94 if(m_pSegmentList) { | 82 delete m_pSegmentList; |
| 95 delete m_pSegmentList; | |
| 96 } | |
| 97 m_pSegmentList = NULL; | 83 m_pSegmentList = NULL; |
| 98 } | 84 } |
| 99 int32_t CJBig2_Context::decodeFile(IFX_Pause* pPause) | 85 int32_t CJBig2_Context::decodeFile(IFX_Pause* pPause) |
| 100 { | 86 { |
| 101 uint8_t cFlags; | 87 uint8_t cFlags; |
| 102 FX_DWORD dwTemp; | 88 FX_DWORD dwTemp; |
| 103 const uint8_t fileID[] = {0x97, 0x4A, 0x42, 0x32, 0x0D, 0x0A, 0x1A, 0x0A}; | 89 const uint8_t fileID[] = {0x97, 0x4A, 0x42, 0x32, 0x0D, 0x0A, 0x1A, 0x0A}; |
| 104 int32_t nRet; | 90 int32_t nRet; |
| 105 if(m_pStream->getByteLeft() < 8) { | 91 if(m_pStream->getByteLeft() < 8) { |
| 106 m_pModule->JBig2_Error("file header too short."); | 92 m_pModule->JBig2_Error("file header too short."); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 int32_t nRet = 0; | 226 int32_t nRet = 0; |
| 241 if(m_pGlobalContext) { | 227 if(m_pGlobalContext) { |
| 242 nRet = m_pGlobalContext->decode_EmbedOrgnazation(pPause); | 228 nRet = m_pGlobalContext->decode_EmbedOrgnazation(pPause); |
| 243 if(nRet != JBIG2_SUCCESS) { | 229 if(nRet != JBIG2_SUCCESS) { |
| 244 m_ProcessiveStatus = FXCODEC_STATUS_ERROR; | 230 m_ProcessiveStatus = FXCODEC_STATUS_ERROR; |
| 245 return nRet; | 231 return nRet; |
| 246 } | 232 } |
| 247 } | 233 } |
| 248 m_bFirstPage = TRUE; | 234 m_bFirstPage = TRUE; |
| 249 m_PauseStep = 0; | 235 m_PauseStep = 0; |
| 250 if(m_pPage) { | 236 delete m_pPage; |
| 251 delete m_pPage; | |
| 252 } | |
| 253 JBIG2_ALLOC(m_pPage, CJBig2_Image(width, height, stride, pBuf)); | 237 JBIG2_ALLOC(m_pPage, CJBig2_Image(width, height, stride, pBuf)); |
| 254 m_bBufSpecified = TRUE; | 238 m_bBufSpecified = TRUE; |
| 255 if(m_pPage && pPause && pPause->NeedToPauseNow()) { | 239 if(m_pPage && pPause && pPause->NeedToPauseNow()) { |
| 256 m_PauseStep = 1; | 240 m_PauseStep = 1; |
| 257 m_ProcessiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 241 m_ProcessiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 258 return nRet; | 242 return nRet; |
| 259 } | 243 } |
| 260 int ret = Continue(pPause); | 244 int ret = Continue(pPause); |
| 261 return ret; | 245 return ret; |
| 262 } | 246 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 } else { | 293 } else { |
| 310 m_ProcessiveStatus = FXCODEC_STATUS_ERROR; | 294 m_ProcessiveStatus = FXCODEC_STATUS_ERROR; |
| 311 } | 295 } |
| 312 return nRet; | 296 return nRet; |
| 313 } | 297 } |
| 314 int32_t CJBig2_Context::getNextPage(uint8_t *pBuf, int32_t width, int32_t height
, int32_t stride, IFX_Pause* pPause) | 298 int32_t CJBig2_Context::getNextPage(uint8_t *pBuf, int32_t width, int32_t height
, int32_t stride, IFX_Pause* pPause) |
| 315 { | 299 { |
| 316 int32_t nRet = JBIG2_ERROR_STREAM_TYPE; | 300 int32_t nRet = JBIG2_ERROR_STREAM_TYPE; |
| 317 m_bFirstPage = FALSE; | 301 m_bFirstPage = FALSE; |
| 318 m_PauseStep = 0; | 302 m_PauseStep = 0; |
| 319 if(m_pPage) { | 303 delete m_pPage; |
| 320 delete m_pPage; | |
| 321 } | |
| 322 JBIG2_ALLOC(m_pPage, CJBig2_Image(width, height, stride, pBuf)); | 304 JBIG2_ALLOC(m_pPage, CJBig2_Image(width, height, stride, pBuf)); |
| 323 m_bBufSpecified = TRUE; | 305 m_bBufSpecified = TRUE; |
| 324 if(m_pPage && pPause && pPause->NeedToPauseNow()) { | 306 if(m_pPage && pPause && pPause->NeedToPauseNow()) { |
| 325 m_PauseStep = 1; | 307 m_PauseStep = 1; |
| 326 m_ProcessiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 308 m_ProcessiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 327 return nRet; | 309 return nRet; |
| 328 } | 310 } |
| 329 return Continue(pPause); | 311 return Continue(pPause); |
| 330 switch(m_nStreamType) { | 312 switch(m_nStreamType) { |
| 331 case JBIG2_FILE_STREAM: | 313 case JBIG2_FILE_STREAM: |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 delete pPageInfo; | 546 delete pPageInfo; |
| 565 goto failed1; | 547 goto failed1; |
| 566 } | 548 } |
| 567 pPageInfo->m_bIsStriped = ((wTemp >> 15) & 1) ? 1 : 0; | 549 pPageInfo->m_bIsStriped = ((wTemp >> 15) & 1) ? 1 : 0; |
| 568 pPageInfo->m_wMaxStripeSize = wTemp & 0x7fff; | 550 pPageInfo->m_wMaxStripeSize = wTemp & 0x7fff; |
| 569 if((pPageInfo->m_dwHeight == 0xffffffff) && (pPageInfo->m_bIsStr
iped != 1)) { | 551 if((pPageInfo->m_dwHeight == 0xffffffff) && (pPageInfo->m_bIsStr
iped != 1)) { |
| 570 m_pModule->JBig2_Warn("page height = 0xffffffff buf stripe f
ield is 0"); | 552 m_pModule->JBig2_Warn("page height = 0xffffffff buf stripe f
ield is 0"); |
| 571 pPageInfo->m_bIsStriped = 1; | 553 pPageInfo->m_bIsStriped = 1; |
| 572 } | 554 } |
| 573 if(!m_bBufSpecified) { | 555 if(!m_bBufSpecified) { |
| 574 if(m_pPage) { | 556 delete m_pPage; |
| 575 delete m_pPage; | |
| 576 } | |
| 577 if(pPageInfo->m_dwHeight == 0xffffffff) { | 557 if(pPageInfo->m_dwHeight == 0xffffffff) { |
| 578 JBIG2_ALLOC(m_pPage, CJBig2_Image(pPageInfo->m_dwWidth,
pPageInfo->m_wMaxStripeSize)); | 558 JBIG2_ALLOC(m_pPage, CJBig2_Image(pPageInfo->m_dwWidth,
pPageInfo->m_wMaxStripeSize)); |
| 579 } else { | 559 } else { |
| 580 JBIG2_ALLOC(m_pPage, CJBig2_Image(pPageInfo->m_dwWidth,
pPageInfo->m_dwHeight)); | 560 JBIG2_ALLOC(m_pPage, CJBig2_Image(pPageInfo->m_dwWidth,
pPageInfo->m_dwHeight)); |
| 581 } | 561 } |
| 582 } | 562 } |
| 583 m_pPage->fill((pPageInfo->m_cFlags & 4) ? 1 : 0); | 563 m_pPage->fill((pPageInfo->m_cFlags & 4) ? 1 : 0); |
| 584 m_pPageInfoList->addItem(pPageInfo); | 564 m_pPageInfoList->addItem(pPageInfo); |
| 585 m_nState = JBIG2_IN_PAGE; | 565 m_nState = JBIG2_IN_PAGE; |
| 586 } | 566 } |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 pSegment->m_Result.sd->m_grContext = grContext; | 833 pSegment->m_Result.sd->m_grContext = grContext; |
| 854 } | 834 } |
| 855 bUsed = TRUE; | 835 bUsed = TRUE; |
| 856 } else { | 836 } else { |
| 857 bUsed = FALSE; | 837 bUsed = FALSE; |
| 858 } | 838 } |
| 859 delete pSymbolDictDecoder; | 839 delete pSymbolDictDecoder; |
| 860 if(SDINSYMS) { | 840 if(SDINSYMS) { |
| 861 m_pModule->JBig2_Free(SDINSYMS); | 841 m_pModule->JBig2_Free(SDINSYMS); |
| 862 } | 842 } |
| 863 if(Table_B1) { | 843 delete Table_B1; |
| 864 delete Table_B1; | 844 delete Table_B2; |
| 865 } | 845 delete Table_B3; |
| 866 if(Table_B2) { | 846 delete Table_B4; |
| 867 delete Table_B2; | 847 delete Table_B5; |
| 868 } | |
| 869 if(Table_B3) { | |
| 870 delete Table_B3; | |
| 871 } | |
| 872 if(Table_B4) { | |
| 873 delete Table_B4; | |
| 874 } | |
| 875 if(Table_B5) { | |
| 876 delete Table_B5; | |
| 877 } | |
| 878 if(bUsed == FALSE) { | 848 if(bUsed == FALSE) { |
| 879 if(gbContext) { | 849 if(gbContext) { |
| 880 m_pModule->JBig2_Free(gbContext); | 850 m_pModule->JBig2_Free(gbContext); |
| 881 } | 851 } |
| 882 if(grContext) { | 852 if(grContext) { |
| 883 m_pModule->JBig2_Free(grContext); | 853 m_pModule->JBig2_Free(grContext); |
| 884 } | 854 } |
| 885 } | 855 } |
| 886 return JBIG2_SUCCESS; | 856 return JBIG2_SUCCESS; |
| 887 failed: | 857 failed: |
| 888 delete pSymbolDictDecoder; | 858 delete pSymbolDictDecoder; |
| 889 if(SDINSYMS) { | 859 if(SDINSYMS) { |
| 890 m_pModule->JBig2_Free(SDINSYMS); | 860 m_pModule->JBig2_Free(SDINSYMS); |
| 891 } | 861 } |
| 892 if(Table_B1) { | 862 delete Table_B1; |
| 893 delete Table_B1; | 863 delete Table_B2; |
| 894 } | 864 delete Table_B3; |
| 895 if(Table_B2) { | 865 delete Table_B4; |
| 896 delete Table_B2; | 866 delete Table_B5; |
| 897 } | |
| 898 if(Table_B3) { | |
| 899 delete Table_B3; | |
| 900 } | |
| 901 if(Table_B4) { | |
| 902 delete Table_B4; | |
| 903 } | |
| 904 if(Table_B5) { | |
| 905 delete Table_B5; | |
| 906 } | |
| 907 if(gbContext) { | 867 if(gbContext) { |
| 908 m_pModule->JBig2_Free(gbContext); | 868 m_pModule->JBig2_Free(gbContext); |
| 909 } | 869 } |
| 910 if(grContext) { | 870 if(grContext) { |
| 911 m_pModule->JBig2_Free(grContext); | 871 m_pModule->JBig2_Free(grContext); |
| 912 } | 872 } |
| 913 return nRet; | 873 return nRet; |
| 914 } | 874 } |
| 915 | 875 |
| 916 FX_BOOL CJBig2_Context::parseTextRegion(CJBig2_Segment *pSegment) | 876 FX_BOOL CJBig2_Context::parseTextRegion(CJBig2_Segment *pSegment) |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 delete pTRD; | 1195 delete pTRD; |
| 1236 if(SBSYMS) { | 1196 if(SBSYMS) { |
| 1237 m_pModule->JBig2_Free(SBSYMS); | 1197 m_pModule->JBig2_Free(SBSYMS); |
| 1238 } | 1198 } |
| 1239 if(SBSYMCODES) { | 1199 if(SBSYMCODES) { |
| 1240 m_pModule->JBig2_Free(SBSYMCODES); | 1200 m_pModule->JBig2_Free(SBSYMCODES); |
| 1241 } | 1201 } |
| 1242 if(grContext) { | 1202 if(grContext) { |
| 1243 m_pModule->JBig2_Free(grContext); | 1203 m_pModule->JBig2_Free(grContext); |
| 1244 } | 1204 } |
| 1245 if(Table_B1) { | 1205 delete Table_B1; |
| 1246 delete Table_B1; | 1206 delete Table_B6; |
| 1247 } | 1207 delete Table_B7; |
| 1248 if(Table_B6) { | 1208 delete Table_B8; |
| 1249 delete Table_B6; | 1209 delete Table_B9; |
| 1250 } | 1210 delete Table_B10; |
| 1251 if(Table_B7) { | 1211 delete Table_B11; |
| 1252 delete Table_B7; | 1212 delete Table_B12; |
| 1253 } | 1213 delete Table_B13; |
| 1254 if(Table_B8) { | 1214 delete Table_B14; |
| 1255 delete Table_B8; | 1215 delete Table_B15; |
| 1256 } | |
| 1257 if(Table_B9) { | |
| 1258 delete Table_B9; | |
| 1259 } | |
| 1260 if(Table_B10) { | |
| 1261 delete Table_B10; | |
| 1262 } | |
| 1263 if(Table_B11) { | |
| 1264 delete Table_B11; | |
| 1265 } | |
| 1266 if(Table_B12) { | |
| 1267 delete Table_B12; | |
| 1268 } | |
| 1269 if(Table_B13) { | |
| 1270 delete Table_B13; | |
| 1271 } | |
| 1272 if(Table_B14) { | |
| 1273 delete Table_B14; | |
| 1274 } | |
| 1275 if(Table_B15) { | |
| 1276 delete Table_B15; | |
| 1277 } | |
| 1278 return JBIG2_SUCCESS; | 1216 return JBIG2_SUCCESS; |
| 1279 failed: | 1217 failed: |
| 1280 delete pTRD; | 1218 delete pTRD; |
| 1281 if(SBSYMS) { | 1219 if(SBSYMS) { |
| 1282 m_pModule->JBig2_Free(SBSYMS); | 1220 m_pModule->JBig2_Free(SBSYMS); |
| 1283 } | 1221 } |
| 1284 if(SBSYMCODES) { | 1222 if(SBSYMCODES) { |
| 1285 m_pModule->JBig2_Free(SBSYMCODES); | 1223 m_pModule->JBig2_Free(SBSYMCODES); |
| 1286 } | 1224 } |
| 1287 if(grContext) { | 1225 if(grContext) { |
| 1288 m_pModule->JBig2_Free(grContext); | 1226 m_pModule->JBig2_Free(grContext); |
| 1289 } | 1227 } |
| 1290 if(Table_B1) { | 1228 delete Table_B1; |
| 1291 delete Table_B1; | 1229 delete Table_B6; |
| 1292 } | 1230 delete Table_B7; |
| 1293 if(Table_B6) { | 1231 delete Table_B8; |
| 1294 delete Table_B6; | 1232 delete Table_B9; |
| 1295 } | 1233 delete Table_B10; |
| 1296 if(Table_B7) { | 1234 delete Table_B11; |
| 1297 delete Table_B7; | 1235 delete Table_B12; |
| 1298 } | 1236 delete Table_B13; |
| 1299 if(Table_B8) { | 1237 delete Table_B14; |
| 1300 delete Table_B8; | 1238 delete Table_B15; |
| 1301 } | |
| 1302 if(Table_B9) { | |
| 1303 delete Table_B9; | |
| 1304 } | |
| 1305 if(Table_B10) { | |
| 1306 delete Table_B10; | |
| 1307 } | |
| 1308 if(Table_B11) { | |
| 1309 delete Table_B11; | |
| 1310 } | |
| 1311 if(Table_B12) { | |
| 1312 delete Table_B12; | |
| 1313 } | |
| 1314 if(Table_B13) { | |
| 1315 delete Table_B13; | |
| 1316 } | |
| 1317 if(Table_B14) { | |
| 1318 delete Table_B14; | |
| 1319 } | |
| 1320 if(Table_B15) { | |
| 1321 delete Table_B15; | |
| 1322 } | |
| 1323 return nRet; | 1239 return nRet; |
| 1324 } | 1240 } |
| 1325 | 1241 |
| 1326 FX_BOOL CJBig2_Context::parsePatternDict(CJBig2_Segment *pSegment, IFX_Pause* pP
ause) | 1242 FX_BOOL CJBig2_Context::parsePatternDict(CJBig2_Segment *pSegment, IFX_Pause* pP
ause) |
| 1327 { | 1243 { |
| 1328 FX_DWORD dwTemp; | 1244 FX_DWORD dwTemp; |
| 1329 uint8_t cFlags; | 1245 uint8_t cFlags; |
| 1330 JBig2ArithCtx *gbContext; | 1246 JBig2ArithCtx *gbContext; |
| 1331 CJBig2_ArithDecoder *pArithDecoder; | 1247 CJBig2_ArithDecoder *pArithDecoder; |
| 1332 CJBig2_PDDProc *pPDD; | 1248 CJBig2_PDDProc *pPDD; |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1838 SBSYMCODES[CURTEMP].code = CURCODE; | 1754 SBSYMCODES[CURTEMP].code = CURCODE; |
| 1839 CURCODE = CURCODE + 1; | 1755 CURCODE = CURCODE + 1; |
| 1840 } | 1756 } |
| 1841 CURTEMP = CURTEMP + 1; | 1757 CURTEMP = CURTEMP + 1; |
| 1842 } | 1758 } |
| 1843 CURLEN = CURLEN + 1; | 1759 CURLEN = CURLEN + 1; |
| 1844 } | 1760 } |
| 1845 m_pModule->JBig2_Free(LENCOUNT); | 1761 m_pModule->JBig2_Free(LENCOUNT); |
| 1846 m_pModule->JBig2_Free(FIRSTCODE); | 1762 m_pModule->JBig2_Free(FIRSTCODE); |
| 1847 } | 1763 } |
| OLD | NEW |