Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: core/src/fpdfapi/fpdf_font/ttgsubtable.h

Issue 1297713003: Don't bother checking pointers before delete[] and FX_Free(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ 7 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
8 #define CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ 8 #define CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
9 9
10 #include "../../../include/fxge/fx_freetype.h" 10 #include "../../../include/fxge/fx_freetype.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 struct TLangSys { 42 struct TLangSys {
43 TT_uint16_t LookupOrder; 43 TT_uint16_t LookupOrder;
44 TT_uint16_t ReqFeatureIndex; 44 TT_uint16_t ReqFeatureIndex;
45 TT_uint16_t FeatureCount; 45 TT_uint16_t FeatureCount;
46 TT_uint16_t* FeatureIndex; 46 TT_uint16_t* FeatureIndex;
47 TLangSys() 47 TLangSys()
48 : LookupOrder(0), 48 : LookupOrder(0),
49 ReqFeatureIndex(0), 49 ReqFeatureIndex(0),
50 FeatureCount(0), 50 FeatureCount(0),
51 FeatureIndex(NULL) {} 51 FeatureIndex(NULL) {}
52 ~TLangSys() { 52 ~TLangSys() { delete[] FeatureIndex; }
53 if (FeatureIndex) {
54 delete[] FeatureIndex;
55 }
56 }
57 53
58 private: 54 private:
59 TLangSys(const TLangSys&); 55 TLangSys(const TLangSys&);
60 TLangSys& operator=(const TLangSys&); 56 TLangSys& operator=(const TLangSys&);
61 }; 57 };
62 struct TLangSysRecord { 58 struct TLangSysRecord {
63 TT_uint32_t LangSysTag; 59 TT_uint32_t LangSysTag;
64 struct TLangSys LangSys; 60 struct TLangSys LangSys;
65 TLangSysRecord() : LangSysTag(0) {} 61 TLangSysRecord() : LangSysTag(0) {}
66 62
67 private: 63 private:
68 TLangSysRecord(const TLangSysRecord&); 64 TLangSysRecord(const TLangSysRecord&);
69 TLangSysRecord& operator=(const TLangSysRecord&); 65 TLangSysRecord& operator=(const TLangSysRecord&);
70 }; 66 };
71 struct TScript { 67 struct TScript {
72 TT_uint16_t DefaultLangSys; 68 TT_uint16_t DefaultLangSys;
73 TT_uint16_t LangSysCount; 69 TT_uint16_t LangSysCount;
74 struct TLangSysRecord* LangSysRecord; 70 struct TLangSysRecord* LangSysRecord;
75 TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(NULL) {} 71 TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(NULL) {}
76 ~TScript() { 72 ~TScript() { delete[] LangSysRecord; }
77 if (LangSysRecord) {
78 delete[] LangSysRecord;
79 }
80 }
81 73
82 private: 74 private:
83 TScript(const TScript&); 75 TScript(const TScript&);
84 TScript& operator=(const TScript&); 76 TScript& operator=(const TScript&);
85 }; 77 };
86 struct TScriptRecord { 78 struct TScriptRecord {
87 TT_uint32_t ScriptTag; 79 TT_uint32_t ScriptTag;
88 struct TScript Script; 80 struct TScript Script;
89 TScriptRecord() : ScriptTag(0) {} 81 TScriptRecord() : ScriptTag(0) {}
90 82
91 private: 83 private:
92 TScriptRecord(const TScriptRecord&); 84 TScriptRecord(const TScriptRecord&);
93 TScriptRecord& operator=(const TScriptRecord&); 85 TScriptRecord& operator=(const TScriptRecord&);
94 }; 86 };
95 struct TScriptList { 87 struct TScriptList {
96 TT_uint16_t ScriptCount; 88 TT_uint16_t ScriptCount;
97 struct TScriptRecord* ScriptRecord; 89 struct TScriptRecord* ScriptRecord;
98 TScriptList() : ScriptCount(0), ScriptRecord(NULL) {} 90 TScriptList() : ScriptCount(0), ScriptRecord(NULL) {}
99 ~TScriptList() { 91 ~TScriptList() { delete[] ScriptRecord; }
100 if (ScriptRecord) {
101 delete[] ScriptRecord;
102 }
103 }
104 92
105 private: 93 private:
106 TScriptList(const TScriptList&); 94 TScriptList(const TScriptList&);
107 TScriptList& operator=(const TScriptList&); 95 TScriptList& operator=(const TScriptList&);
108 }; 96 };
109 struct TFeature { 97 struct TFeature {
110 TT_uint16_t FeatureParams; 98 TT_uint16_t FeatureParams;
111 int LookupCount; 99 int LookupCount;
112 TT_uint16_t* LookupListIndex; 100 TT_uint16_t* LookupListIndex;
113 TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(NULL) {} 101 TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(NULL) {}
114 ~TFeature() { 102 ~TFeature() {
115 if (LookupListIndex) {
116 delete[] LookupListIndex; 103 delete[] LookupListIndex;
Tom Sepez 2015/08/14 21:21:34 nit: indentation. Several other places. clang-fo
Lei Zhang 2015/08/14 21:43:14 I don't know why clang-format did all the ones abo
117 }
118 } 104 }
119 105
120 private: 106 private:
121 TFeature(const TFeature&); 107 TFeature(const TFeature&);
122 TFeature& operator=(const TFeature&); 108 TFeature& operator=(const TFeature&);
123 }; 109 };
124 struct TFeatureRecord { 110 struct TFeatureRecord {
125 TT_uint32_t FeatureTag; 111 TT_uint32_t FeatureTag;
126 struct TFeature Feature; 112 struct TFeature Feature;
127 TFeatureRecord() : FeatureTag(0) {} 113 TFeatureRecord() : FeatureTag(0) {}
128 114
129 private: 115 private:
130 TFeatureRecord(const TFeatureRecord&); 116 TFeatureRecord(const TFeatureRecord&);
131 TFeatureRecord& operator=(const TFeatureRecord&); 117 TFeatureRecord& operator=(const TFeatureRecord&);
132 }; 118 };
133 struct TFeatureList { 119 struct TFeatureList {
134 int FeatureCount; 120 int FeatureCount;
135 struct TFeatureRecord* FeatureRecord; 121 struct TFeatureRecord* FeatureRecord;
136 TFeatureList() : FeatureCount(0), FeatureRecord(NULL) {} 122 TFeatureList() : FeatureCount(0), FeatureRecord(NULL) {}
137 ~TFeatureList() { 123 ~TFeatureList() {
138 if (FeatureRecord) {
139 delete[] FeatureRecord; 124 delete[] FeatureRecord;
140 }
141 } 125 }
142 126
143 private: 127 private:
144 TFeatureList(const TFeatureList&); 128 TFeatureList(const TFeatureList&);
145 TFeatureList& operator=(const TFeatureList&); 129 TFeatureList& operator=(const TFeatureList&);
146 }; 130 };
147 enum TLookupFlag { 131 enum TLookupFlag {
148 LOOKUPFLAG_RightToLeft = 0x0001, 132 LOOKUPFLAG_RightToLeft = 0x0001,
149 LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002, 133 LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002,
150 LOOKUPFLAG_IgnoreLigatures = 0x0004, 134 LOOKUPFLAG_IgnoreLigatures = 0x0004,
151 LOOKUPFLAG_IgnoreMarks = 0x0008, 135 LOOKUPFLAG_IgnoreMarks = 0x0008,
152 LOOKUPFLAG_Reserved = 0x00F0, 136 LOOKUPFLAG_Reserved = 0x00F0,
153 LOOKUPFLAG_MarkAttachmentType = 0xFF00, 137 LOOKUPFLAG_MarkAttachmentType = 0xFF00,
154 }; 138 };
155 struct TCoverageFormatBase { 139 struct TCoverageFormatBase {
156 TT_uint16_t CoverageFormat; 140 TT_uint16_t CoverageFormat;
157 CFX_GlyphMap m_glyphMap; 141 CFX_GlyphMap m_glyphMap;
158 TCoverageFormatBase() : CoverageFormat(0) {} 142 TCoverageFormatBase() : CoverageFormat(0) {}
159 virtual ~TCoverageFormatBase() {} 143 virtual ~TCoverageFormatBase() {}
160 144
161 private: 145 private:
162 TCoverageFormatBase(const TCoverageFormatBase&); 146 TCoverageFormatBase(const TCoverageFormatBase&);
163 TCoverageFormatBase& operator=(const TCoverageFormatBase&); 147 TCoverageFormatBase& operator=(const TCoverageFormatBase&);
164 }; 148 };
165 struct TCoverageFormat1 : public TCoverageFormatBase { 149 struct TCoverageFormat1 : public TCoverageFormatBase {
166 TT_uint16_t GlyphCount; 150 TT_uint16_t GlyphCount;
167 TT_uint16_t* GlyphArray; 151 TT_uint16_t* GlyphArray;
168 TCoverageFormat1() : GlyphCount(0), GlyphArray(NULL) { CoverageFormat = 1; } 152 TCoverageFormat1() : GlyphCount(0), GlyphArray(NULL) { CoverageFormat = 1; }
169 ~TCoverageFormat1() { 153 ~TCoverageFormat1() {
170 if (GlyphArray) {
171 delete[] GlyphArray; 154 delete[] GlyphArray;
172 }
173 } 155 }
174 156
175 private: 157 private:
176 TCoverageFormat1(const TCoverageFormat1&); 158 TCoverageFormat1(const TCoverageFormat1&);
177 TCoverageFormat1& operator=(const TCoverageFormat1&); 159 TCoverageFormat1& operator=(const TCoverageFormat1&);
178 }; 160 };
179 struct TRangeRecord { 161 struct TRangeRecord {
180 TT_uint16_t Start; 162 TT_uint16_t Start;
181 TT_uint16_t End; 163 TT_uint16_t End;
182 TT_uint16_t StartCoverageIndex; 164 TT_uint16_t StartCoverageIndex;
183 TRangeRecord() : Start(0), End(0), StartCoverageIndex(0) {} 165 TRangeRecord() : Start(0), End(0), StartCoverageIndex(0) {}
184 friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) { 166 friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) {
185 return r1.Start > r2.Start; 167 return r1.Start > r2.Start;
186 } 168 }
187 169
188 private: 170 private:
189 TRangeRecord(const TRangeRecord&); 171 TRangeRecord(const TRangeRecord&);
190 }; 172 };
191 struct TCoverageFormat2 : public TCoverageFormatBase { 173 struct TCoverageFormat2 : public TCoverageFormatBase {
192 TT_uint16_t RangeCount; 174 TT_uint16_t RangeCount;
193 struct TRangeRecord* RangeRecord; 175 struct TRangeRecord* RangeRecord;
194 TCoverageFormat2() : RangeCount(0), RangeRecord(NULL) { 176 TCoverageFormat2() : RangeCount(0), RangeRecord(NULL) {
195 CoverageFormat = 2; 177 CoverageFormat = 2;
196 } 178 }
197 ~TCoverageFormat2() { 179 ~TCoverageFormat2() {
198 if (RangeRecord) {
199 delete[] RangeRecord; 180 delete[] RangeRecord;
200 }
201 } 181 }
202 182
203 private: 183 private:
204 TCoverageFormat2(const TCoverageFormat2&); 184 TCoverageFormat2(const TCoverageFormat2&);
205 TCoverageFormat2& operator=(const TCoverageFormat2&); 185 TCoverageFormat2& operator=(const TCoverageFormat2&);
206 }; 186 };
207 struct TClassDefFormatBase { 187 struct TClassDefFormatBase {
208 TT_uint16_t ClassFormat; 188 TT_uint16_t ClassFormat;
209 TClassDefFormatBase() : ClassFormat(0) {} 189 TClassDefFormatBase() : ClassFormat(0) {}
210 virtual ~TClassDefFormatBase() {} 190 virtual ~TClassDefFormatBase() {}
211 191
212 private: 192 private:
213 TClassDefFormatBase(const TClassDefFormatBase&); 193 TClassDefFormatBase(const TClassDefFormatBase&);
214 TClassDefFormatBase& operator=(const TClassDefFormatBase&); 194 TClassDefFormatBase& operator=(const TClassDefFormatBase&);
215 }; 195 };
216 struct TClassDefFormat1 : public TClassDefFormatBase { 196 struct TClassDefFormat1 : public TClassDefFormatBase {
217 TT_uint16_t StartGlyph; 197 TT_uint16_t StartGlyph;
218 TT_uint16_t GlyphCount; 198 TT_uint16_t GlyphCount;
219 TT_uint16_t* ClassValueArray; 199 TT_uint16_t* ClassValueArray;
220 TClassDefFormat1() : StartGlyph(0), GlyphCount(0), ClassValueArray(NULL) { 200 TClassDefFormat1() : StartGlyph(0), GlyphCount(0), ClassValueArray(NULL) {
221 ClassFormat = 1; 201 ClassFormat = 1;
222 } 202 }
223 ~TClassDefFormat1() { 203 ~TClassDefFormat1() {
224 if (ClassValueArray) {
225 delete[] ClassValueArray; 204 delete[] ClassValueArray;
226 }
227 } 205 }
228 206
229 private: 207 private:
230 TClassDefFormat1(const TClassDefFormat1&); 208 TClassDefFormat1(const TClassDefFormat1&);
231 TClassDefFormat1& operator=(const TClassDefFormat1&); 209 TClassDefFormat1& operator=(const TClassDefFormat1&);
232 }; 210 };
233 struct TClassRangeRecord { 211 struct TClassRangeRecord {
234 TT_uint16_t Start; 212 TT_uint16_t Start;
235 TT_uint16_t End; 213 TT_uint16_t End;
236 TT_uint16_t Class; 214 TT_uint16_t Class;
237 TClassRangeRecord() : Start(0), End(0), Class(0) {} 215 TClassRangeRecord() : Start(0), End(0), Class(0) {}
238 216
239 private: 217 private:
240 TClassRangeRecord(const TClassRangeRecord&); 218 TClassRangeRecord(const TClassRangeRecord&);
241 TClassRangeRecord& operator=(const TClassRangeRecord&); 219 TClassRangeRecord& operator=(const TClassRangeRecord&);
242 }; 220 };
243 struct TClassDefFormat2 : public TClassDefFormatBase { 221 struct TClassDefFormat2 : public TClassDefFormatBase {
244 TT_uint16_t ClassRangeCount; 222 TT_uint16_t ClassRangeCount;
245 struct TClassRangeRecord* ClassRangeRecord; 223 struct TClassRangeRecord* ClassRangeRecord;
246 TClassDefFormat2() : ClassRangeCount(0), ClassRangeRecord(NULL) { 224 TClassDefFormat2() : ClassRangeCount(0), ClassRangeRecord(NULL) {
247 ClassFormat = 2; 225 ClassFormat = 2;
248 } 226 }
249 ~TClassDefFormat2() { 227 ~TClassDefFormat2() {
250 if (ClassRangeRecord) {
251 delete[] ClassRangeRecord; 228 delete[] ClassRangeRecord;
252 }
253 } 229 }
254 230
255 private: 231 private:
256 TClassDefFormat2(const TClassDefFormat2&); 232 TClassDefFormat2(const TClassDefFormat2&);
257 TClassDefFormat2& operator=(const TClassDefFormat2&); 233 TClassDefFormat2& operator=(const TClassDefFormat2&);
258 }; 234 };
259 struct TDevice { 235 struct TDevice {
260 TT_uint16_t StartSize; 236 TT_uint16_t StartSize;
261 TT_uint16_t EndSize; 237 TT_uint16_t EndSize;
262 TT_uint16_t DeltaFormat; 238 TT_uint16_t DeltaFormat;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 295
320 private: 296 private:
321 TLookup(const TLookup&); 297 TLookup(const TLookup&);
322 TLookup& operator=(const TLookup&); 298 TLookup& operator=(const TLookup&);
323 }; 299 };
324 struct TLookupList { 300 struct TLookupList {
325 int LookupCount; 301 int LookupCount;
326 struct TLookup* Lookup; 302 struct TLookup* Lookup;
327 TLookupList() : LookupCount(0), Lookup(NULL) {} 303 TLookupList() : LookupCount(0), Lookup(NULL) {}
328 ~TLookupList() { 304 ~TLookupList() {
329 if (Lookup) {
330 delete[] Lookup; 305 delete[] Lookup;
331 }
332 } 306 }
333 307
334 private: 308 private:
335 TLookupList(const TLookupList&); 309 TLookupList(const TLookupList&);
336 TLookupList& operator=(const TLookupList&); 310 TLookupList& operator=(const TLookupList&);
337 }; 311 };
338 bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist); 312 bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist);
339 void ParseScriptList(FT_Bytes raw, TScriptList* rec); 313 void ParseScriptList(FT_Bytes raw, TScriptList* rec);
340 void ParseScript(FT_Bytes raw, TScript* rec); 314 void ParseScript(FT_Bytes raw, TScript* rec);
341 void ParseLangSys(FT_Bytes raw, TLangSys* rec); 315 void ParseLangSys(FT_Bytes raw, TLangSys* rec);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 class CFX_GSUBTable final : public IFX_GSUBTable { 366 class CFX_GSUBTable final : public IFX_GSUBTable {
393 public: 367 public:
394 ~CFX_GSUBTable() override {} 368 ~CFX_GSUBTable() override {}
395 virtual FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, 369 virtual FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum,
396 FX_DWORD* vglyphnum) override; 370 FX_DWORD* vglyphnum) override;
397 371
398 CFX_CTTGSUBTable m_GsubImp; 372 CFX_CTTGSUBTable m_GsubImp;
399 }; 373 };
400 374
401 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ 375 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698