1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "JBig2_Segment.h"
CJBig2_Segment()8 CJBig2_Segment::CJBig2_Segment()
9 {
10     init();
11 }
~CJBig2_Segment()12 CJBig2_Segment::~CJBig2_Segment()
13 {
14     clean();
15 }
init()16 void CJBig2_Segment::init()
17 {
18     m_dwNumber = 0;
19     m_cFlags.c = 0;
20     m_nReferred_to_segment_count = 0;
21     m_pReferred_to_segment_numbers = NULL;
22     m_dwPage_association = 0;
23     m_dwData_length = 0;
24     m_dwHeader_Length = 0;
25     m_pData = NULL;
26     m_State = JBIG2_SEGMENT_HEADER_UNPARSED;
27     m_nResultType = JBIG2_VOID_POINTER;
28     m_Result.vd = NULL;
29 }
clean()30 void CJBig2_Segment::clean()
31 {
32     if(m_pReferred_to_segment_numbers) {
33         m_pModule->JBig2_Free(m_pReferred_to_segment_numbers);
34     }
35     if(m_Result.vd) {
36         switch(m_nResultType) {
37             case JBIG2_IMAGE_POINTER:
38                 delete m_Result.im;
39                 break;
40             case JBIG2_SYMBOL_DICT_POINTER:
41                 delete m_Result.sd;
42                 break;
43             case JBIG2_PATTERN_DICT_POINTER:
44                 delete m_Result.pd;
45                 break;
46             case JBIG2_HUFFMAN_TABLE_POINTER:
47                 delete m_Result.ht;
48                 break;
49             default:
50                 m_pModule->JBig2_Free(m_Result.vd);
51         }
52     }
53 }
54