| OLD | NEW |
| 1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 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 "JBig2_SddProc.h" | 7 #include "JBig2_SddProc.h" |
| 8 | 8 |
| 9 #include "../../../../third_party/base/nonstd_unique_ptr.h" | 9 #include "../../../../third_party/base/nonstd_unique_ptr.h" |
| 10 #include "../../../include/fxcrt/fx_basic.h" | 10 #include "../../../include/fxcrt/fx_basic.h" |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 } | 251 } |
| 252 if (EXRUNLENGTH != 0) { | 252 if (EXRUNLENGTH != 0) { |
| 253 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { | 253 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { |
| 254 EXFLAGS[I] = CUREXFLAG; | 254 EXFLAGS[I] = CUREXFLAG; |
| 255 } | 255 } |
| 256 } | 256 } |
| 257 EXINDEX = EXINDEX + EXRUNLENGTH; | 257 EXINDEX = EXINDEX + EXRUNLENGTH; |
| 258 CUREXFLAG = !CUREXFLAG; | 258 CUREXFLAG = !CUREXFLAG; |
| 259 } | 259 } |
| 260 pDict.reset(new CJBig2_SymbolDict); | 260 pDict.reset(new CJBig2_SymbolDict); |
| 261 pDict->SDNUMEXSYMS = SDNUMEXSYMS; | |
| 262 pDict->SDEXSYMS = FX_Alloc(CJBig2_Image*, SDNUMEXSYMS); | |
| 263 I = J = 0; | 261 I = J = 0; |
| 264 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { | 262 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { |
| 265 if (EXFLAGS[I] && J < SDNUMEXSYMS) { | 263 if (EXFLAGS[I] && J < SDNUMEXSYMS) { |
| 266 if (I < SDNUMINSYMS) { | 264 if (I < SDNUMINSYMS) { |
| 267 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]); | 265 pDict->AddImage(new CJBig2_Image(*SDINSYMS[I])); |
| 268 } else { | 266 } else { |
| 269 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; | 267 pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); |
| 270 } | 268 } |
| 271 J = J + 1; | 269 ++J; |
| 272 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { | 270 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { |
| 273 delete SDNEWSYMS[I - SDNUMINSYMS]; | 271 delete SDNEWSYMS[I - SDNUMINSYMS]; |
| 274 } | 272 } |
| 275 } | 273 } |
| 276 if (J < SDNUMEXSYMS) { | |
| 277 pDict->SDNUMEXSYMS = J; | |
| 278 } | |
| 279 FX_Free(EXFLAGS); | 274 FX_Free(EXFLAGS); |
| 280 FX_Free(SDNEWSYMS); | 275 FX_Free(SDNEWSYMS); |
| 281 return pDict.release(); | 276 return pDict.release(); |
| 282 failed: | 277 failed: |
| 283 for (I = 0; I < NSYMSDECODED; I++) { | 278 for (I = 0; I < NSYMSDECODED; I++) { |
| 284 if (SDNEWSYMS[I]) { | 279 if (SDNEWSYMS[I]) { |
| 285 delete SDNEWSYMS[I]; | 280 delete SDNEWSYMS[I]; |
| 286 SDNEWSYMS[I] = nullptr; | 281 SDNEWSYMS[I] = nullptr; |
| 287 } | 282 } |
| 288 } | 283 } |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 goto failed; | 588 goto failed; |
| 594 } | 589 } |
| 595 if (EXRUNLENGTH != 0) { | 590 if (EXRUNLENGTH != 0) { |
| 596 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { | 591 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { |
| 597 EXFLAGS[I] = CUREXFLAG; | 592 EXFLAGS[I] = CUREXFLAG; |
| 598 } | 593 } |
| 599 } | 594 } |
| 600 EXINDEX = EXINDEX + EXRUNLENGTH; | 595 EXINDEX = EXINDEX + EXRUNLENGTH; |
| 601 CUREXFLAG = !CUREXFLAG; | 596 CUREXFLAG = !CUREXFLAG; |
| 602 } | 597 } |
| 603 pDict->SDNUMEXSYMS = SDNUMEXSYMS; | |
| 604 pDict->SDEXSYMS = FX_Alloc(CJBig2_Image*, SDNUMEXSYMS); | |
| 605 I = J = 0; | 598 I = J = 0; |
| 606 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { | 599 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { |
| 607 if (EXFLAGS[I] && J < SDNUMEXSYMS) { | 600 if (EXFLAGS[I] && J < SDNUMEXSYMS) { |
| 608 if (I < SDNUMINSYMS) { | 601 if (I < SDNUMINSYMS) { |
| 609 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]); | 602 pDict->AddImage(new CJBig2_Image(*SDINSYMS[I])); |
| 610 } else { | 603 } else { |
| 611 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; | 604 pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); |
| 612 } | 605 } |
| 613 J = J + 1; | 606 ++J; |
| 614 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { | 607 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { |
| 615 delete SDNEWSYMS[I - SDNUMINSYMS]; | 608 delete SDNEWSYMS[I - SDNUMINSYMS]; |
| 616 } | 609 } |
| 617 } | 610 } |
| 618 if (J < SDNUMEXSYMS) { | |
| 619 pDict->SDNUMEXSYMS = J; | |
| 620 } | |
| 621 FX_Free(EXFLAGS); | 611 FX_Free(EXFLAGS); |
| 622 FX_Free(SDNEWSYMS); | 612 FX_Free(SDNEWSYMS); |
| 623 if (SDREFAGG == 0) { | 613 if (SDREFAGG == 0) { |
| 624 FX_Free(SDNEWSYMWIDTHS); | 614 FX_Free(SDNEWSYMWIDTHS); |
| 625 } | 615 } |
| 626 return pDict.release(); | 616 return pDict.release(); |
| 627 failed: | 617 failed: |
| 628 for (I = 0; I < NSYMSDECODED; I++) { | 618 for (I = 0; I < NSYMSDECODED; I++) { |
| 629 delete SDNEWSYMS[I]; | 619 delete SDNEWSYMS[I]; |
| 630 } | 620 } |
| 631 FX_Free(SDNEWSYMS); | 621 FX_Free(SDNEWSYMS); |
| 632 if (SDREFAGG == 0) { | 622 if (SDREFAGG == 0) { |
| 633 FX_Free(SDNEWSYMWIDTHS); | 623 FX_Free(SDNEWSYMWIDTHS); |
| 634 } | 624 } |
| 635 return nullptr; | 625 return nullptr; |
| 636 } | 626 } |
| OLD | NEW |