/src/harfbuzz/src/hb-sanitize.hh
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright © 2007,2008,2009,2010 Red Hat, Inc. |
3 | | * Copyright © 2012,2018 Google, Inc. |
4 | | * |
5 | | * This is part of HarfBuzz, a text shaping library. |
6 | | * |
7 | | * Permission is hereby granted, without written agreement and without |
8 | | * license or royalty fees, to use, copy, modify, and distribute this |
9 | | * software and its documentation for any purpose, provided that the |
10 | | * above copyright notice and the following two paragraphs appear in |
11 | | * all copies of this software. |
12 | | * |
13 | | * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR |
14 | | * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES |
15 | | * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN |
16 | | * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
17 | | * DAMAGE. |
18 | | * |
19 | | * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
20 | | * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
21 | | * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
22 | | * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO |
23 | | * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
24 | | * |
25 | | * Red Hat Author(s): Behdad Esfahbod |
26 | | * Google Author(s): Behdad Esfahbod |
27 | | */ |
28 | | |
29 | | #ifndef HB_SANITIZE_HH |
30 | | #define HB_SANITIZE_HH |
31 | | |
32 | | #include "hb.hh" |
33 | | #include "hb-blob.hh" |
34 | | #include "hb-dispatch.hh" |
35 | | |
36 | | |
37 | | /* |
38 | | * Sanitize |
39 | | * |
40 | | * |
41 | | * === Introduction === |
42 | | * |
43 | | * The sanitize machinery is at the core of our zero-cost font loading. We |
44 | | * mmap() font file into memory and create a blob out of it. Font subtables |
45 | | * are returned as a readonly sub-blob of the main font blob. These table |
46 | | * blobs are then sanitized before use, to ensure invalid memory access does |
47 | | * not happen. The toplevel sanitize API use is like, eg. to load the 'head' |
48 | | * table: |
49 | | * |
50 | | * hb_blob_t *head_blob = hb_sanitize_context_t ().reference_table<OT::head> (face); |
51 | | * |
52 | | * The blob then can be converted to a head table struct with: |
53 | | * |
54 | | * const head *head_table = head_blob->as<head> (); |
55 | | * |
56 | | * What the reference_table does is, to call hb_face_reference_table() to load |
57 | | * the table blob, sanitize it and return either the sanitized blob, or empty |
58 | | * blob if sanitization failed. The blob->as() function returns the null |
59 | | * object of its template type argument if the blob is empty. Otherwise, it |
60 | | * just casts the blob contents to the desired type. |
61 | | * |
62 | | * Sanitizing a blob of data with a type T works as follows (with minor |
63 | | * simplification): |
64 | | * |
65 | | * - Cast blob content to T*, call sanitize() method of it, |
66 | | * - If sanitize succeeded, return blob. |
67 | | * - Otherwise, if blob is not writable, try making it writable, |
68 | | * or copy if cannot be made writable in-place, |
69 | | * - Call sanitize() again. Return blob if sanitize succeeded. |
70 | | * - Return empty blob otherwise. |
71 | | * |
72 | | * |
73 | | * === The sanitize() contract === |
74 | | * |
75 | | * The sanitize() method of each object type shall return true if it's safe to |
76 | | * call other methods of the object, and %false otherwise. |
77 | | * |
78 | | * Note that what sanitize() checks for might align with what the specification |
79 | | * describes as valid table data, but does not have to be. In particular, we |
80 | | * do NOT want to be pedantic and concern ourselves with validity checks that |
81 | | * are irrelevant to our use of the table. On the contrary, we want to be |
82 | | * lenient with error handling and accept invalid data to the extent that it |
83 | | * does not impose extra burden on us. |
84 | | * |
85 | | * Based on the sanitize contract, one can see that what we check for depends |
86 | | * on how we use the data in other table methods. Ie. if other table methods |
87 | | * assume that offsets do NOT point out of the table data block, then that's |
88 | | * something sanitize() must check for (GSUB/GPOS/GDEF/etc work this way). On |
89 | | * the other hand, if other methods do such checks themselves, then sanitize() |
90 | | * does not have to bother with them (glyf/local work this way). The choice |
91 | | * depends on the table structure and sanitize() performance. For example, to |
92 | | * check glyf/loca offsets in sanitize() would cost O(num-glyphs). We try hard |
93 | | * to avoid such costs during font loading. By postponing such checks to the |
94 | | * actual glyph loading, we reduce the sanitize cost to O(1) and total runtime |
95 | | * cost to O(used-glyphs). As such, this is preferred. |
96 | | * |
97 | | * The same argument can be made re GSUB/GPOS/GDEF, but there, the table |
98 | | * structure is so complicated that by checking all offsets at sanitize() time, |
99 | | * we make the code much simpler in other methods, as offsets and referenced |
100 | | * objects do not need to be validated at each use site. |
101 | | */ |
102 | | |
103 | | /* This limits sanitizing time on really broken fonts. */ |
104 | | #ifndef HB_SANITIZE_MAX_EDITS |
105 | 6.17M | #define HB_SANITIZE_MAX_EDITS 32 |
106 | | #endif |
107 | | #ifndef HB_SANITIZE_MAX_OPS_FACTOR |
108 | | #define HB_SANITIZE_MAX_OPS_FACTOR 64 |
109 | | #endif |
110 | | #ifndef HB_SANITIZE_MAX_OPS_MIN |
111 | 20.5M | #define HB_SANITIZE_MAX_OPS_MIN 16384 |
112 | | #endif |
113 | | #ifndef HB_SANITIZE_MAX_OPS_MAX |
114 | 21.0M | #define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF |
115 | | #endif |
116 | | #ifndef HB_SANITIZE_MAX_SUBTABLES |
117 | 4.89M | #define HB_SANITIZE_MAX_SUBTABLES 0x4000 |
118 | | #endif |
119 | | |
120 | | struct hb_sanitize_context_t : |
121 | | hb_dispatch_context_t<hb_sanitize_context_t, bool, HB_DEBUG_SANITIZE> |
122 | | { |
123 | | hb_sanitize_context_t () : |
124 | | start (nullptr), end (nullptr), |
125 | | max_ops (0), max_subtables (0), |
126 | | recursion_depth (0), |
127 | | writable (false), edit_count (0), |
128 | | blob (nullptr), |
129 | | num_glyphs (65536), |
130 | 19.2M | num_glyphs_set (false) {} |
131 | | |
132 | 0 | const char *get_name () { return "SANITIZE"; } |
133 | | template <typename T, typename F> |
134 | | bool may_dispatch (const T *obj HB_UNUSED, const F *format) |
135 | 116M | { return format->sanitize (this); } bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::SinglePos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::SinglePos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 34.4M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::PairPos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::PairPos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 4.81M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::CursivePos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::CursivePos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 2.83M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkBasePos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkBasePos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 3.01M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkLigPos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkLigPos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 2.41M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkMarkPos, OT::IntType<unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkMarkPos const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 3.39M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Context, OT::IntType<unsigned short, 2u> >(OT::Context const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 3.95M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::ChainContext, OT::IntType<unsigned short, 2u> >(OT::ChainContext const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 3.44M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GPOS_impl::ExtensionPos>, OT::IntType<unsigned short, 2u> >(OT::Extension<OT::Layout::GPOS_impl::ExtensionPos> const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 1.27M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos>, OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*, OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*) Line | Count | Source | 135 | 83.5k | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Paint, OT::IntType<unsigned char, 1u> >(OT::Paint const*, OT::IntType<unsigned char, 1u> const*) Line | Count | Source | 135 | 8.07M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::ClipBox, OT::IntType<unsigned char, 1u> >(OT::ClipBox const*, OT::IntType<unsigned char, 1u> const*) Line | Count | Source | 135 | 78.5k | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::SingleSubst, OT::IntType<unsigned short, 2u> >(OT::Layout::GSUB_impl::SingleSubst const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 36.0M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::MultipleSubst, OT::IntType<unsigned short, 2u> >(OT::Layout::GSUB_impl::MultipleSubst const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 4.14M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::AlternateSubst, OT::IntType<unsigned short, 2u> >(OT::Layout::GSUB_impl::AlternateSubst const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 1.79M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::LigatureSubst, OT::IntType<unsigned short, 2u> >(OT::Layout::GSUB_impl::LigatureSubst const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 2.12M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst>, OT::IntType<unsigned short, 2u> >(OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst> const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 2.51M | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst>, OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> >(OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*, OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*) Line | Count | Source | 135 | 269k | { return format->sanitize (this); } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::ReverseChainSingleSubst, OT::IntType<unsigned short, 2u> >(OT::Layout::GSUB_impl::ReverseChainSingleSubst const*, OT::IntType<unsigned short, 2u> const*) Line | Count | Source | 135 | 2.08M | { return format->sanitize (this); } |
|
136 | 234M | static return_t default_return_value () { return true; } |
137 | 1.52M | static return_t no_dispatch_return_value () { return false; } |
138 | 0 | bool stop_sublookup_iteration (const return_t r) const { return !r; } |
139 | | |
140 | | bool visit_subtables (unsigned count) |
141 | 4.89M | { |
142 | 4.89M | max_subtables += count; |
143 | 4.89M | return max_subtables < HB_SANITIZE_MAX_SUBTABLES; |
144 | 4.89M | } |
145 | | |
146 | | private: |
147 | | template <typename T, typename ...Ts> auto |
148 | | _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN |
149 | | ( obj.sanitize (this, std::forward<Ts> (ds)...) ) |
150 | | template <typename T, typename ...Ts> auto |
151 | | _dispatch (const T &obj, hb_priority<0>, Ts&&... ds) HB_AUTO_RETURN |
152 | | ( obj.dispatch (this, std::forward<Ts> (ds)...) ) |
153 | | public: |
154 | | template <typename T, typename ...Ts> auto |
155 | | dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN |
156 | | ( _dispatch (obj, hb_prioritize, std::forward<Ts> (ds)...) ) |
157 | | |
158 | | |
159 | | void init (hb_blob_t *b) |
160 | 20.1M | { |
161 | 20.1M | this->blob = hb_blob_reference (b); |
162 | 20.1M | this->writable = false; |
163 | 20.1M | } |
164 | | |
165 | | void set_num_glyphs (unsigned int num_glyphs_) |
166 | 18.7M | { |
167 | 18.7M | num_glyphs = num_glyphs_; |
168 | 18.7M | num_glyphs_set = true; |
169 | 18.7M | } |
170 | 7.80M | unsigned int get_num_glyphs () { return num_glyphs; } |
171 | | |
172 | 557k | void set_max_ops (int max_ops_) { max_ops = max_ops_; } |
173 | | |
174 | | template <typename T> |
175 | | void set_object (const T *obj) |
176 | 1.04M | { |
177 | 1.04M | reset_object (); |
178 | | |
179 | 1.04M | if (!obj) return; |
180 | | |
181 | 852k | const char *obj_start = (const char *) obj; |
182 | 852k | if (unlikely (obj_start < this->start || this->end <= obj_start)) |
183 | 0 | this->start = this->end = nullptr; |
184 | 852k | else |
185 | 852k | { |
186 | 852k | this->start = obj_start; |
187 | 852k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); |
188 | 852k | } |
189 | 852k | } void hb_sanitize_context_t::set_object<AAT::ChainSubtable<AAT::ExtendedTypes> >(AAT::ChainSubtable<AAT::ExtendedTypes> const*) Line | Count | Source | 176 | 320k | { | 177 | 320k | reset_object (); | 178 | | | 179 | 320k | if (!obj) return; | 180 | | | 181 | 320k | const char *obj_start = (const char *) obj; | 182 | 320k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 183 | 0 | this->start = this->end = nullptr; | 184 | 320k | else | 185 | 320k | { | 186 | 320k | this->start = obj_start; | 187 | 320k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 188 | 320k | } | 189 | 320k | } |
void hb_sanitize_context_t::set_object<AAT::ChainSubtable<AAT::ObsoleteTypes> >(AAT::ChainSubtable<AAT::ObsoleteTypes> const*) Line | Count | Source | 176 | 307k | { | 177 | 307k | reset_object (); | 178 | | | 179 | 307k | if (!obj) return; | 180 | | | 181 | 307k | const char *obj_start = (const char *) obj; | 182 | 307k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 183 | 0 | this->start = this->end = nullptr; | 184 | 307k | else | 185 | 307k | { | 186 | 307k | this->start = obj_start; | 187 | 307k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 188 | 307k | } | 189 | 307k | } |
void hb_sanitize_context_t::set_object<AAT::KerxSubTable>(AAT::KerxSubTable const*) Line | Count | Source | 176 | 155k | { | 177 | 155k | reset_object (); | 178 | | | 179 | 155k | if (!obj) return; | 180 | | | 181 | 41.2k | const char *obj_start = (const char *) obj; | 182 | 41.2k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 183 | 0 | this->start = this->end = nullptr; | 184 | 41.2k | else | 185 | 41.2k | { | 186 | 41.2k | this->start = obj_start; | 187 | 41.2k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 188 | 41.2k | } | 189 | 41.2k | } |
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernOTSubTableHeader> >(OT::KernSubTable<OT::KernOTSubTableHeader> const*) Line | Count | Source | 176 | 178k | { | 177 | 178k | reset_object (); | 178 | | | 179 | 178k | if (!obj) return; | 180 | | | 181 | 138k | const char *obj_start = (const char *) obj; | 182 | 138k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 183 | 0 | this->start = this->end = nullptr; | 184 | 138k | else | 185 | 138k | { | 186 | 138k | this->start = obj_start; | 187 | 138k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 188 | 138k | } | 189 | 138k | } |
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernAATSubTableHeader> >(OT::KernSubTable<OT::KernAATSubTableHeader> const*) Line | Count | Source | 176 | 81.5k | { | 177 | 81.5k | reset_object (); | 178 | | | 179 | 81.5k | if (!obj) return; | 180 | | | 181 | 44.1k | const char *obj_start = (const char *) obj; | 182 | 44.1k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 183 | 0 | this->start = this->end = nullptr; | 184 | 44.1k | else | 185 | 44.1k | { | 186 | 44.1k | this->start = obj_start; | 187 | 44.1k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 188 | 44.1k | } | 189 | 44.1k | } |
|
190 | | |
191 | | void reset_object () |
192 | 22.6M | { |
193 | 22.6M | this->start = this->blob->data; |
194 | 22.6M | this->end = this->start + this->blob->length; |
195 | 22.6M | assert (this->start <= this->end); /* Must not overflow. */ |
196 | 22.6M | } |
197 | | |
198 | | void start_processing () |
199 | 20.5M | { |
200 | 20.5M | reset_object (); |
201 | 20.5M | unsigned m; |
202 | 20.5M | if (unlikely (hb_unsigned_mul_overflows (this->end - this->start, HB_SANITIZE_MAX_OPS_FACTOR, &m))) |
203 | 0 | this->max_ops = HB_SANITIZE_MAX_OPS_MAX; |
204 | 20.5M | else |
205 | 20.5M | this->max_ops = hb_clamp (m, |
206 | 20.5M | (unsigned) HB_SANITIZE_MAX_OPS_MIN, |
207 | 20.5M | (unsigned) HB_SANITIZE_MAX_OPS_MAX); |
208 | 20.5M | this->edit_count = 0; |
209 | 20.5M | this->debug_depth = 0; |
210 | 20.5M | this->recursion_depth = 0; |
211 | | |
212 | 20.5M | DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1, |
213 | 20.5M | "start [%p..%p] (%lu bytes)", |
214 | 20.5M | this->start, this->end, |
215 | 20.5M | (unsigned long) (this->end - this->start)); |
216 | 20.5M | } |
217 | | |
218 | | void end_processing () |
219 | 20.9M | { |
220 | 20.9M | DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1, |
221 | 20.9M | "end [%p..%p] %u edit requests", |
222 | 20.9M | this->start, this->end, this->edit_count); |
223 | | |
224 | 20.9M | hb_blob_destroy (this->blob); |
225 | 20.9M | this->blob = nullptr; |
226 | 20.9M | this->start = this->end = nullptr; |
227 | 20.9M | } |
228 | | |
229 | 337k | unsigned get_edit_count () { return edit_count; } |
230 | | |
231 | | bool check_range (const void *base, |
232 | | unsigned int len) const |
233 | 16.6G | { |
234 | 16.6G | const char *p = (const char *) base; |
235 | 16.6G | bool ok = !len || |
236 | 16.6G | (this->start <= p && |
237 | 16.4G | p <= this->end && |
238 | 16.4G | (unsigned int) (this->end - p) >= len && |
239 | 16.4G | (this->max_ops -= len) > 0); |
240 | | |
241 | 16.6G | DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0, |
242 | 16.6G | "check_range [%p..%p]" |
243 | 16.6G | " (%u bytes) in [%p..%p] -> %s", |
244 | 16.6G | p, p + len, len, |
245 | 16.6G | this->start, this->end, |
246 | 16.6G | ok ? "OK" : "OUT-OF-RANGE"); |
247 | | |
248 | 16.6G | return likely (ok); |
249 | 16.6G | } |
250 | | |
251 | | template <typename T> |
252 | | bool check_range (const T *base, |
253 | | unsigned int a, |
254 | | unsigned int b) const |
255 | 369M | { |
256 | 369M | unsigned m; |
257 | 369M | return !hb_unsigned_mul_overflows (a, b, &m) && |
258 | 369M | this->check_range (base, m); |
259 | 369M | } bool hb_sanitize_context_t::check_range<OT::IntType<unsigned short, 2u> >(OT::IntType<unsigned short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 21.6M | { | 256 | 21.6M | unsigned m; | 257 | 21.6M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 21.6M | this->check_range (base, m); | 259 | 21.6M | } |
bool hb_sanitize_context_t::check_range<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.94M | { | 256 | 2.94M | unsigned m; | 257 | 2.94M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.94M | this->check_range (base, m); | 259 | 2.94M | } |
bool hb_sanitize_context_t::check_range<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 736k | { | 256 | 736k | unsigned m; | 257 | 736k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 736k | this->check_range (base, m); | 259 | 736k | } |
bool hb_sanitize_context_t::check_range<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 116M | { | 256 | 116M | unsigned m; | 257 | 116M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 116M | this->check_range (base, m); | 259 | 116M | } |
bool hb_sanitize_context_t::check_range<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 5.03M | { | 256 | 5.03M | unsigned m; | 257 | 5.03M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 5.03M | this->check_range (base, m); | 259 | 5.03M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 19.0k | { | 256 | 19.0k | unsigned m; | 257 | 19.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 19.0k | this->check_range (base, m); | 259 | 19.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 25.3k | { | 256 | 25.3k | unsigned m; | 257 | 25.3k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 25.3k | this->check_range (base, m); | 259 | 25.3k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 278k | { | 256 | 278k | unsigned m; | 257 | 278k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 278k | this->check_range (base, m); | 259 | 278k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 8.80k | { | 256 | 8.80k | unsigned m; | 257 | 8.80k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 8.80k | this->check_range (base, m); | 259 | 8.80k | } |
bool hb_sanitize_context_t::check_range<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 76.5k | { | 256 | 76.5k | unsigned m; | 257 | 76.5k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 76.5k | this->check_range (base, m); | 259 | 76.5k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 80.2k | { | 256 | 80.2k | unsigned m; | 257 | 80.2k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 80.2k | this->check_range (base, m); | 259 | 80.2k | } |
bool hb_sanitize_context_t::check_range<OT::IntType<unsigned char, 1u> >(OT::IntType<unsigned char, 1u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 11.5M | { | 256 | 11.5M | unsigned m; | 257 | 11.5M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 11.5M | this->check_range (base, m); | 259 | 11.5M | } |
bool hb_sanitize_context_t::check_range<AAT::Feature>(AAT::Feature const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 91.9k | { | 256 | 91.9k | unsigned m; | 257 | 91.9k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 91.9k | this->check_range (base, m); | 259 | 91.9k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 54.3k | { | 256 | 54.3k | unsigned m; | 257 | 54.3k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 54.3k | this->check_range (base, m); | 259 | 54.3k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 16.0k | { | 256 | 16.0k | unsigned m; | 257 | 16.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 16.0k | this->check_range (base, m); | 259 | 16.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 8.60k | { | 256 | 8.60k | unsigned m; | 257 | 8.60k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 8.60k | this->check_range (base, m); | 259 | 8.60k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 17.4k | { | 256 | 17.4k | unsigned m; | 257 | 17.4k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 17.4k | this->check_range (base, m); | 259 | 17.4k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 21.6k | { | 256 | 21.6k | unsigned m; | 257 | 21.6k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 21.6k | this->check_range (base, m); | 259 | 21.6k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 11.7k | { | 256 | 11.7k | unsigned m; | 257 | 11.7k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 11.7k | this->check_range (base, m); | 259 | 11.7k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 6.94k | { | 256 | 6.94k | unsigned m; | 257 | 6.94k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 6.94k | this->check_range (base, m); | 259 | 6.94k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 19.6k | { | 256 | 19.6k | unsigned m; | 257 | 19.6k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 19.6k | this->check_range (base, m); | 259 | 19.6k | } |
bool hb_sanitize_context_t::check_range<AAT::KernPair>(AAT::KernPair const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 7.90k | { | 256 | 7.90k | unsigned m; | 257 | 7.90k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 7.90k | this->check_range (base, m); | 259 | 7.90k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 3.66k | { | 256 | 3.66k | unsigned m; | 257 | 3.66k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 3.66k | this->check_range (base, m); | 259 | 3.66k | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 6.76k | { | 256 | 6.76k | unsigned m; | 257 | 6.76k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 6.76k | this->check_range (base, m); | 259 | 6.76k | } |
bool hb_sanitize_context_t::check_range<OT::IntType<unsigned int, 4u> >(OT::IntType<unsigned int, 4u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 31.8k | { | 256 | 31.8k | unsigned m; | 257 | 31.8k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 31.8k | this->check_range (base, m); | 259 | 31.8k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 5.06k | { | 256 | 5.06k | unsigned m; | 257 | 5.06k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 5.06k | this->check_range (base, m); | 259 | 5.06k | } |
bool hb_sanitize_context_t::check_range<AAT::Anchor>(AAT::Anchor const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 53.8k | { | 256 | 53.8k | unsigned m; | 257 | 53.8k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 53.8k | this->check_range (base, m); | 259 | 53.8k | } |
bool hb_sanitize_context_t::check_range<OT::IntType<short, 2u> >(OT::IntType<short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 12.1M | { | 256 | 12.1M | unsigned m; | 257 | 12.1M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 12.1M | this->check_range (base, m); | 259 | 12.1M | } |
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::IntType<int, 4u>, 16u> >(OT::HBFixed<OT::IntType<int, 4u>, 16u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.81k | { | 256 | 2.81k | unsigned m; | 257 | 2.81k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.81k | this->check_range (base, m); | 259 | 2.81k | } |
bool hb_sanitize_context_t::check_range<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.16k | { | 256 | 2.16k | unsigned m; | 257 | 2.16k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.16k | this->check_range (base, m); | 259 | 2.16k | } |
bool hb_sanitize_context_t::check_range<AAT::FeatureName>(AAT::FeatureName const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 477 | { | 256 | 477 | unsigned m; | 257 | 477 | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 477 | this->check_range (base, m); | 259 | 477 | } |
bool hb_sanitize_context_t::check_range<AAT::SettingName>(AAT::SettingName const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 4.22k | { | 256 | 4.22k | unsigned m; | 257 | 4.22k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 4.22k | this->check_range (base, m); | 259 | 4.22k | } |
bool hb_sanitize_context_t::check_range<OT::IntType<unsigned int, 3u> >(OT::IntType<unsigned int, 3u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 4.46M | { | 256 | 4.46M | unsigned m; | 257 | 4.46M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 4.46M | this->check_range (base, m); | 259 | 4.46M | } |
bool hb_sanitize_context_t::check_range<OT::Index>(OT::Index const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 57.3M | { | 256 | 57.3M | unsigned m; | 257 | 57.3M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 57.3M | this->check_range (base, m); | 259 | 57.3M | } |
bool hb_sanitize_context_t::check_range<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.48M | { | 256 | 1.48M | unsigned m; | 257 | 1.48M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.48M | this->check_range (base, m); | 259 | 1.48M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 28.4k | { | 256 | 28.4k | unsigned m; | 257 | 28.4k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 28.4k | this->check_range (base, m); | 259 | 28.4k | } |
bool hb_sanitize_context_t::check_range<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 12.1k | { | 256 | 12.1k | unsigned m; | 257 | 12.1k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 12.1k | this->check_range (base, m); | 259 | 12.1k | } |
bool hb_sanitize_context_t::check_range<OT::FeatureVariationRecord>(OT::FeatureVariationRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 16.3k | { | 256 | 16.3k | unsigned m; | 257 | 16.3k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 16.3k | this->check_range (base, m); | 259 | 16.3k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.64M | { | 256 | 1.64M | unsigned m; | 257 | 1.64M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.64M | this->check_range (base, m); | 259 | 1.64M | } |
bool hb_sanitize_context_t::check_range<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 7.63M | { | 256 | 7.63M | unsigned m; | 257 | 7.63M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 7.63M | this->check_range (base, m); | 259 | 7.63M | } |
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::EntryExitRecord>(OT::Layout::GPOS_impl::EntryExitRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 161k | { | 256 | 161k | unsigned m; | 257 | 161k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 161k | this->check_range (base, m); | 259 | 161k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 93.0M | { | 256 | 93.0M | unsigned m; | 257 | 93.0M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 93.0M | this->check_range (base, m); | 259 | 93.0M | } |
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 601k | { | 256 | 601k | unsigned m; | 257 | 601k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 601k | this->check_range (base, m); | 259 | 601k | } |
bool hb_sanitize_context_t::check_range<OT::Offset<OT::IntType<unsigned short, 2u>, true> >(OT::Offset<OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 5.11M | { | 256 | 5.11M | unsigned m; | 257 | 5.11M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 5.11M | this->check_range (base, m); | 259 | 5.11M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.68M | { | 256 | 1.68M | unsigned m; | 257 | 1.68M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.68M | this->check_range (base, m); | 259 | 1.68M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 327k | { | 256 | 327k | unsigned m; | 257 | 327k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 327k | this->check_range (base, m); | 259 | 327k | } |
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.25M | { | 256 | 2.25M | unsigned m; | 257 | 2.25M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.25M | this->check_range (base, m); | 259 | 2.25M | } |
bool hb_sanitize_context_t::check_range<void>(void const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 440k | { | 256 | 440k | unsigned m; | 257 | 440k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 440k | this->check_range (base, m); | 259 | 440k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 70.0k | { | 256 | 70.0k | unsigned m; | 257 | 70.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 70.0k | this->check_range (base, m); | 259 | 70.0k | } |
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 93.0k | { | 256 | 93.0k | unsigned m; | 257 | 93.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 93.0k | this->check_range (base, m); | 259 | 93.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 126k | { | 256 | 126k | unsigned m; | 257 | 126k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 126k | this->check_range (base, m); | 259 | 126k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 542k | { | 256 | 542k | unsigned m; | 257 | 542k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 542k | this->check_range (base, m); | 259 | 542k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 473k | { | 256 | 473k | unsigned m; | 257 | 473k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 473k | this->check_range (base, m); | 259 | 473k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 94.0k | { | 256 | 94.0k | unsigned m; | 257 | 94.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 94.0k | this->check_range (base, m); | 259 | 94.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 32.2k | { | 256 | 32.2k | unsigned m; | 257 | 32.2k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 32.2k | this->check_range (base, m); | 259 | 32.2k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 140k | { | 256 | 140k | unsigned m; | 257 | 140k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 140k | this->check_range (base, m); | 259 | 140k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 678k | { | 256 | 678k | unsigned m; | 257 | 678k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 678k | this->check_range (base, m); | 259 | 678k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 693k | { | 256 | 693k | unsigned m; | 257 | 693k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 693k | this->check_range (base, m); | 259 | 693k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 96.0k | { | 256 | 96.0k | unsigned m; | 257 | 96.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 96.0k | this->check_range (base, m); | 259 | 96.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 52.1k | { | 256 | 52.1k | unsigned m; | 257 | 52.1k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 52.1k | this->check_range (base, m); | 259 | 52.1k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 135k | { | 256 | 135k | unsigned m; | 257 | 135k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 135k | this->check_range (base, m); | 259 | 135k | } |
bool hb_sanitize_context_t::check_range<OT::Record<OT::Script> >(OT::Record<OT::Script> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 677k | { | 256 | 677k | unsigned m; | 257 | 677k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 677k | this->check_range (base, m); | 259 | 677k | } |
bool hb_sanitize_context_t::check_range<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 634k | { | 256 | 634k | unsigned m; | 257 | 634k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 634k | this->check_range (base, m); | 259 | 634k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 248k | { | 256 | 248k | unsigned m; | 257 | 248k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 248k | this->check_range (base, m); | 259 | 248k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.78k | { | 256 | 1.78k | unsigned m; | 257 | 1.78k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.78k | this->check_range (base, m); | 259 | 1.78k | } |
bool hb_sanitize_context_t::check_range<OT::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 7.79k | { | 256 | 7.79k | unsigned m; | 257 | 7.79k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 7.79k | this->check_range (base, m); | 259 | 7.79k | } |
bool hb_sanitize_context_t::check_range<OT::UVSMapping>(OT::UVSMapping const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 25.7k | { | 256 | 25.7k | unsigned m; | 257 | 25.7k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 25.7k | this->check_range (base, m); | 259 | 25.7k | } |
bool hb_sanitize_context_t::check_range<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 9.38k | { | 256 | 9.38k | unsigned m; | 257 | 9.38k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 9.38k | this->check_range (base, m); | 259 | 9.38k | } |
bool hb_sanitize_context_t::check_range<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 102k | { | 256 | 102k | unsigned m; | 257 | 102k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 102k | this->check_range (base, m); | 259 | 102k | } |
bool hb_sanitize_context_t::check_range<OT::EncodingRecord>(OT::EncodingRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 246k | { | 256 | 246k | unsigned m; | 257 | 246k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 246k | this->check_range (base, m); | 259 | 246k | } |
bool hb_sanitize_context_t::check_range<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 537k | { | 256 | 537k | unsigned m; | 257 | 537k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 537k | this->check_range (base, m); | 259 | 537k | } |
bool hb_sanitize_context_t::check_range<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 629k | { | 256 | 629k | unsigned m; | 257 | 629k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 629k | this->check_range (base, m); | 259 | 629k | } |
bool hb_sanitize_context_t::check_range<OT::ClipRecord>(OT::ClipRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 23.4k | { | 256 | 23.4k | unsigned m; | 257 | 23.4k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 23.4k | this->check_range (base, m); | 259 | 23.4k | } |
bool hb_sanitize_context_t::check_range<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 87.8k | { | 256 | 87.8k | unsigned m; | 257 | 87.8k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 87.8k | this->check_range (base, m); | 259 | 87.8k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 56.1k | { | 256 | 56.1k | unsigned m; | 257 | 56.1k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 56.1k | this->check_range (base, m); | 259 | 56.1k | } |
bool hb_sanitize_context_t::check_range<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 100k | { | 256 | 100k | unsigned m; | 257 | 100k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 100k | this->check_range (base, m); | 259 | 100k | } |
bool hb_sanitize_context_t::check_range<OT::LayerRecord>(OT::LayerRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 97.8k | { | 256 | 97.8k | unsigned m; | 257 | 97.8k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 97.8k | this->check_range (base, m); | 259 | 97.8k | } |
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::IntType<short, 2u>, 14u> >(OT::HBFixed<OT::IntType<short, 2u>, 14u> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 18.1k | { | 256 | 18.1k | unsigned m; | 257 | 18.1k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 18.1k | this->check_range (base, m); | 259 | 18.1k | } |
bool hb_sanitize_context_t::check_range<OT::TableRecord>(OT::TableRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 477k | { | 256 | 477k | unsigned m; | 257 | 477k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 477k | this->check_range (base, m); | 259 | 477k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.94k | { | 256 | 1.94k | unsigned m; | 257 | 1.94k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.94k | this->check_range (base, m); | 259 | 1.94k | } |
bool hb_sanitize_context_t::check_range<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.33k | { | 256 | 1.33k | unsigned m; | 257 | 1.33k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.33k | this->check_range (base, m); | 259 | 1.33k | } |
bool hb_sanitize_context_t::check_range<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 193k | { | 256 | 193k | unsigned m; | 257 | 193k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 193k | this->check_range (base, m); | 259 | 193k | } |
bool hb_sanitize_context_t::check_range<OT::AxisRecord>(OT::AxisRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 31.5k | { | 256 | 31.5k | unsigned m; | 257 | 31.5k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 31.5k | this->check_range (base, m); | 259 | 31.5k | } |
bool hb_sanitize_context_t::check_range<OT::InstanceRecord>(OT::InstanceRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 31.4k | { | 256 | 31.4k | unsigned m; | 257 | 31.4k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 31.4k | this->check_range (base, m); | 259 | 31.4k | } |
bool hb_sanitize_context_t::check_range<OT::AxisValueMap>(OT::AxisValueMap const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 107k | { | 256 | 107k | unsigned m; | 257 | 107k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 107k | this->check_range (base, m); | 259 | 107k | } |
bool hb_sanitize_context_t::check_range<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.29k | { | 256 | 1.29k | unsigned m; | 257 | 1.29k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.29k | this->check_range (base, m); | 259 | 1.29k | } |
bool hb_sanitize_context_t::check_range<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 4.91k | { | 256 | 4.91k | unsigned m; | 257 | 4.91k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 4.91k | this->check_range (base, m); | 259 | 4.91k | } |
bool hb_sanitize_context_t::check_range<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 14.2k | { | 256 | 14.2k | unsigned m; | 257 | 14.2k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 14.2k | this->check_range (base, m); | 259 | 14.2k | } |
bool hb_sanitize_context_t::check_range<OT::Offset<OT::IntType<unsigned int, 4u>, true> >(OT::Offset<OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.89k | { | 256 | 1.89k | unsigned m; | 257 | 1.89k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.89k | this->check_range (base, m); | 259 | 1.89k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 3.69k | { | 256 | 3.69k | unsigned m; | 257 | 3.69k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 3.69k | this->check_range (base, m); | 259 | 3.69k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::SBIXGlyph, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::IntType<unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 9.32k | { | 256 | 9.32k | unsigned m; | 257 | 9.32k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 9.32k | this->check_range (base, m); | 259 | 9.32k | } |
bool hb_sanitize_context_t::check_range<CFF::FDSelect3_4_Range<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.43k | { | 256 | 2.43k | unsigned m; | 257 | 2.43k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.43k | this->check_range (base, m); | 259 | 2.43k | } |
bool hb_sanitize_context_t::check_range<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 222 | { | 256 | 222 | unsigned m; | 257 | 222 | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 222 | this->check_range (base, m); | 259 | 222 | } |
bool hb_sanitize_context_t::check_range<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 141 | { | 256 | 141 | unsigned m; | 257 | 141 | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 141 | this->check_range (base, m); | 259 | 141 | } |
bool hb_sanitize_context_t::check_range<unsigned char>(unsigned char const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.61M | { | 256 | 2.61M | unsigned m; | 257 | 2.61M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.61M | this->check_range (base, m); | 259 | 2.61M | } |
bool hb_sanitize_context_t::check_range<CFF::FDSelect3_4_Range<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 41 | { | 256 | 41 | unsigned m; | 257 | 41 | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 41 | this->check_range (base, m); | 259 | 41 | } |
bool hb_sanitize_context_t::check_range<OT::DataMap>(OT::DataMap const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 994 | { | 256 | 994 | unsigned m; | 257 | 994 | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 994 | this->check_range (base, m); | 259 | 994 | } |
bool hb_sanitize_context_t::check_range<OT::NameRecord>(OT::NameRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 254k | { | 256 | 254k | unsigned m; | 257 | 254k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 254k | this->check_range (base, m); | 259 | 254k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 3.11M | { | 256 | 3.11M | unsigned m; | 257 | 3.11M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 3.11M | this->check_range (base, m); | 259 | 3.11M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 546k | { | 256 | 546k | unsigned m; | 257 | 546k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 546k | this->check_range (base, m); | 259 | 546k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 133k | { | 256 | 133k | unsigned m; | 257 | 133k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 133k | this->check_range (base, m); | 259 | 133k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 114k | { | 256 | 114k | unsigned m; | 257 | 114k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 114k | this->check_range (base, m); | 259 | 114k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 68.0k | { | 256 | 68.0k | unsigned m; | 257 | 68.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 68.0k | this->check_range (base, m); | 259 | 68.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 424k | { | 256 | 424k | unsigned m; | 257 | 424k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 424k | this->check_range (base, m); | 259 | 424k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.47M | { | 256 | 2.47M | unsigned m; | 257 | 2.47M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.47M | this->check_range (base, m); | 259 | 2.47M | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 106k | { | 256 | 106k | unsigned m; | 257 | 106k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 106k | this->check_range (base, m); | 259 | 106k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 44.1k | { | 256 | 44.1k | unsigned m; | 257 | 44.1k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 44.1k | this->check_range (base, m); | 259 | 44.1k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 363k | { | 256 | 363k | unsigned m; | 257 | 363k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 363k | this->check_range (base, m); | 259 | 363k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 1.93k | { | 256 | 1.93k | unsigned m; | 257 | 1.93k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 1.93k | this->check_range (base, m); | 259 | 1.93k | } |
bool hb_sanitize_context_t::check_range<OT::VertOriginMetric>(OT::VertOriginMetric const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.75k | { | 256 | 2.75k | unsigned m; | 257 | 2.75k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.75k | this->check_range (base, m); | 259 | 2.75k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_range<OT::Tag>(OT::Tag const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 19.5k | { | 256 | 19.5k | unsigned m; | 257 | 19.5k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 19.5k | this->check_range (base, m); | 259 | 19.5k | } |
bool hb_sanitize_context_t::check_range<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 18.3k | { | 256 | 18.3k | unsigned m; | 257 | 18.3k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 18.3k | this->check_range (base, m); | 259 | 18.3k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 103k | { | 256 | 103k | unsigned m; | 257 | 103k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 103k | this->check_range (base, m); | 259 | 103k | } |
bool hb_sanitize_context_t::check_range<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 2.12M | { | 256 | 2.12M | unsigned m; | 257 | 2.12M | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 2.12M | this->check_range (base, m); | 259 | 2.12M | } |
bool hb_sanitize_context_t::check_range<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 198k | { | 256 | 198k | unsigned m; | 257 | 198k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 198k | this->check_range (base, m); | 259 | 198k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_range<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 361k | { | 256 | 361k | unsigned m; | 257 | 361k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 361k | this->check_range (base, m); | 259 | 361k | } |
bool hb_sanitize_context_t::check_range<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 7.43k | { | 256 | 7.43k | unsigned m; | 257 | 7.43k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 7.43k | this->check_range (base, m); | 259 | 7.43k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 7.04k | { | 256 | 7.04k | unsigned m; | 257 | 7.04k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 7.04k | this->check_range (base, m); | 259 | 7.04k | } |
bool hb_sanitize_context_t::check_range<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 163k | { | 256 | 163k | unsigned m; | 257 | 163k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 163k | this->check_range (base, m); | 259 | 163k | } |
bool hb_sanitize_context_t::check_range<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int, unsigned int) const Line | Count | Source | 255 | 281k | { | 256 | 281k | unsigned m; | 257 | 281k | return !hb_unsigned_mul_overflows (a, b, &m) && | 258 | 281k | this->check_range (base, m); | 259 | 281k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::GaspRange>(OT::GaspRange const*, unsigned int, unsigned int) const |
260 | | |
261 | | template <typename T> |
262 | | bool check_range (const T *base, |
263 | | unsigned int a, |
264 | | unsigned int b, |
265 | | unsigned int c) const |
266 | 11.9M | { |
267 | 11.9M | unsigned m; |
268 | 11.9M | return !hb_unsigned_mul_overflows (a, b, &m) && |
269 | 11.9M | this->check_range (base, m, c); |
270 | 11.9M | } bool hb_sanitize_context_t::check_range<OT::IntType<short, 2u> >(OT::IntType<short, 2u> const*, unsigned int, unsigned int, unsigned int) const Line | Count | Source | 266 | 11.2M | { | 267 | 11.2M | unsigned m; | 268 | 11.2M | return !hb_unsigned_mul_overflows (a, b, &m) && | 269 | 11.2M | this->check_range (base, m, c); | 270 | 11.2M | } |
bool hb_sanitize_context_t::check_range<OT::IntType<unsigned char, 1u> >(OT::IntType<unsigned char, 1u> const*, unsigned int, unsigned int, unsigned int) const Line | Count | Source | 266 | 627k | { | 267 | 627k | unsigned m; | 268 | 627k | return !hb_unsigned_mul_overflows (a, b, &m) && | 269 | 627k | this->check_range (base, m, c); | 270 | 627k | } |
|
271 | | |
272 | | template <typename T> |
273 | | bool check_array (const T *base, unsigned int len) const |
274 | 353M | { |
275 | 353M | return this->check_range (base, len, hb_static_size (T)); |
276 | 353M | } bool hb_sanitize_context_t::check_array<OT::IntType<unsigned short, 2u> >(OT::IntType<unsigned short, 2u> const*, unsigned int) const Line | Count | Source | 274 | 20.9M | { | 275 | 20.9M | return this->check_range (base, len, hb_static_size (T)); | 276 | 20.9M | } |
bool hb_sanitize_context_t::check_array<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*, unsigned int) const Line | Count | Source | 274 | 2.94M | { | 275 | 2.94M | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.94M | } |
bool hb_sanitize_context_t::check_array<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*, unsigned int) const Line | Count | Source | 274 | 736k | { | 275 | 736k | return this->check_range (base, len, hb_static_size (T)); | 276 | 736k | } |
bool hb_sanitize_context_t::check_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int) const Line | Count | Source | 274 | 116M | { | 275 | 116M | return this->check_range (base, len, hb_static_size (T)); | 276 | 116M | } |
bool hb_sanitize_context_t::check_array<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int) const Line | Count | Source | 274 | 5.03M | { | 275 | 5.03M | return this->check_range (base, len, hb_static_size (T)); | 276 | 5.03M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 19.0k | { | 275 | 19.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 19.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 25.3k | { | 275 | 25.3k | return this->check_range (base, len, hb_static_size (T)); | 276 | 25.3k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 278k | { | 275 | 278k | return this->check_range (base, len, hb_static_size (T)); | 276 | 278k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 8.80k | { | 275 | 8.80k | return this->check_range (base, len, hb_static_size (T)); | 276 | 8.80k | } |
bool hb_sanitize_context_t::check_array<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int) const Line | Count | Source | 274 | 76.5k | { | 275 | 76.5k | return this->check_range (base, len, hb_static_size (T)); | 276 | 76.5k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 80.2k | { | 275 | 80.2k | return this->check_range (base, len, hb_static_size (T)); | 276 | 80.2k | } |
bool hb_sanitize_context_t::check_array<AAT::Feature>(AAT::Feature const*, unsigned int) const Line | Count | Source | 274 | 91.9k | { | 275 | 91.9k | return this->check_range (base, len, hb_static_size (T)); | 276 | 91.9k | } |
bool hb_sanitize_context_t::check_array<OT::IntType<unsigned char, 1u> >(OT::IntType<unsigned char, 1u> const*, unsigned int) const Line | Count | Source | 274 | 10.6M | { | 275 | 10.6M | return this->check_range (base, len, hb_static_size (T)); | 276 | 10.6M | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int) const Line | Count | Source | 274 | 54.3k | { | 275 | 54.3k | return this->check_range (base, len, hb_static_size (T)); | 276 | 54.3k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 16.0k | { | 275 | 16.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 16.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> const*, unsigned int) const Line | Count | Source | 274 | 8.60k | { | 275 | 8.60k | return this->check_range (base, len, hb_static_size (T)); | 276 | 8.60k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 17.4k | { | 275 | 17.4k | return this->check_range (base, len, hb_static_size (T)); | 276 | 17.4k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 21.6k | { | 275 | 21.6k | return this->check_range (base, len, hb_static_size (T)); | 276 | 21.6k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int) const bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 11.7k | { | 275 | 11.7k | return this->check_range (base, len, hb_static_size (T)); | 276 | 11.7k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*, unsigned int) const Line | Count | Source | 274 | 6.94k | { | 275 | 6.94k | return this->check_range (base, len, hb_static_size (T)); | 276 | 6.94k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 19.6k | { | 275 | 19.6k | return this->check_range (base, len, hb_static_size (T)); | 276 | 19.6k | } |
bool hb_sanitize_context_t::check_array<AAT::KernPair>(AAT::KernPair const*, unsigned int) const Line | Count | Source | 274 | 7.90k | { | 275 | 7.90k | return this->check_range (base, len, hb_static_size (T)); | 276 | 7.90k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 3.66k | { | 275 | 3.66k | return this->check_range (base, len, hb_static_size (T)); | 276 | 3.66k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int) const Line | Count | Source | 274 | 6.76k | { | 275 | 6.76k | return this->check_range (base, len, hb_static_size (T)); | 276 | 6.76k | } |
bool hb_sanitize_context_t::check_array<OT::IntType<unsigned int, 4u> >(OT::IntType<unsigned int, 4u> const*, unsigned int) const Line | Count | Source | 274 | 31.8k | { | 275 | 31.8k | return this->check_range (base, len, hb_static_size (T)); | 276 | 31.8k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*, unsigned int) const Line | Count | Source | 274 | 5.06k | { | 275 | 5.06k | return this->check_range (base, len, hb_static_size (T)); | 276 | 5.06k | } |
bool hb_sanitize_context_t::check_array<AAT::Anchor>(AAT::Anchor const*, unsigned int) const Line | Count | Source | 274 | 53.8k | { | 275 | 53.8k | return this->check_range (base, len, hb_static_size (T)); | 276 | 53.8k | } |
bool hb_sanitize_context_t::check_array<OT::IntType<short, 2u> >(OT::IntType<short, 2u> const*, unsigned int) const Line | Count | Source | 274 | 865k | { | 275 | 865k | return this->check_range (base, len, hb_static_size (T)); | 276 | 865k | } |
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::IntType<int, 4u>, 16u> >(OT::HBFixed<OT::IntType<int, 4u>, 16u> const*, unsigned int) const Line | Count | Source | 274 | 2.81k | { | 275 | 2.81k | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.81k | } |
bool hb_sanitize_context_t::check_array<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int) const Line | Count | Source | 274 | 2.16k | { | 275 | 2.16k | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.16k | } |
bool hb_sanitize_context_t::check_array<AAT::FeatureName>(AAT::FeatureName const*, unsigned int) const Line | Count | Source | 274 | 477 | { | 275 | 477 | return this->check_range (base, len, hb_static_size (T)); | 276 | 477 | } |
bool hb_sanitize_context_t::check_array<AAT::SettingName>(AAT::SettingName const*, unsigned int) const Line | Count | Source | 274 | 4.22k | { | 275 | 4.22k | return this->check_range (base, len, hb_static_size (T)); | 276 | 4.22k | } |
bool hb_sanitize_context_t::check_array<OT::IntType<unsigned int, 3u> >(OT::IntType<unsigned int, 3u> const*, unsigned int) const Line | Count | Source | 274 | 4.46M | { | 275 | 4.46M | return this->check_range (base, len, hb_static_size (T)); | 276 | 4.46M | } |
bool hb_sanitize_context_t::check_array<OT::Index>(OT::Index const*, unsigned int) const Line | Count | Source | 274 | 57.3M | { | 275 | 57.3M | return this->check_range (base, len, hb_static_size (T)); | 276 | 57.3M | } |
bool hb_sanitize_context_t::check_array<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*, unsigned int) const Line | Count | Source | 274 | 1.48M | { | 275 | 1.48M | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.48M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 28.4k | { | 275 | 28.4k | return this->check_range (base, len, hb_static_size (T)); | 276 | 28.4k | } |
bool hb_sanitize_context_t::check_array<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int) const Line | Count | Source | 274 | 12.1k | { | 275 | 12.1k | return this->check_range (base, len, hb_static_size (T)); | 276 | 12.1k | } |
bool hb_sanitize_context_t::check_array<OT::FeatureVariationRecord>(OT::FeatureVariationRecord const*, unsigned int) const Line | Count | Source | 274 | 16.3k | { | 275 | 16.3k | return this->check_range (base, len, hb_static_size (T)); | 276 | 16.3k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.64M | { | 275 | 1.64M | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.64M | } |
bool hb_sanitize_context_t::check_array<OT::LookupRecord>(OT::LookupRecord const*, unsigned int) const Line | Count | Source | 274 | 7.63M | { | 275 | 7.63M | return this->check_range (base, len, hb_static_size (T)); | 276 | 7.63M | } |
bool hb_sanitize_context_t::check_array<OT::Layout::GPOS_impl::EntryExitRecord>(OT::Layout::GPOS_impl::EntryExitRecord const*, unsigned int) const Line | Count | Source | 274 | 161k | { | 275 | 161k | return this->check_range (base, len, hb_static_size (T)); | 276 | 161k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 93.0M | { | 275 | 93.0M | return this->check_range (base, len, hb_static_size (T)); | 276 | 93.0M | } |
bool hb_sanitize_context_t::check_array<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*, unsigned int) const Line | Count | Source | 274 | 601k | { | 275 | 601k | return this->check_range (base, len, hb_static_size (T)); | 276 | 601k | } |
bool hb_sanitize_context_t::check_array<OT::Offset<OT::IntType<unsigned short, 2u>, true> >(OT::Offset<OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 5.11M | { | 275 | 5.11M | return this->check_range (base, len, hb_static_size (T)); | 276 | 5.11M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.68M | { | 275 | 1.68M | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.68M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 327k | { | 275 | 327k | return this->check_range (base, len, hb_static_size (T)); | 276 | 327k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 70.0k | { | 275 | 70.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 70.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 126k | { | 275 | 126k | return this->check_range (base, len, hb_static_size (T)); | 276 | 126k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 542k | { | 275 | 542k | return this->check_range (base, len, hb_static_size (T)); | 276 | 542k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 473k | { | 275 | 473k | return this->check_range (base, len, hb_static_size (T)); | 276 | 473k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 94.0k | { | 275 | 94.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 94.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 32.2k | { | 275 | 32.2k | return this->check_range (base, len, hb_static_size (T)); | 276 | 32.2k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 140k | { | 275 | 140k | return this->check_range (base, len, hb_static_size (T)); | 276 | 140k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 678k | { | 275 | 678k | return this->check_range (base, len, hb_static_size (T)); | 276 | 678k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 693k | { | 275 | 693k | return this->check_range (base, len, hb_static_size (T)); | 276 | 693k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 96.0k | { | 275 | 96.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 96.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 52.1k | { | 275 | 52.1k | return this->check_range (base, len, hb_static_size (T)); | 276 | 52.1k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 135k | { | 275 | 135k | return this->check_range (base, len, hb_static_size (T)); | 276 | 135k | } |
bool hb_sanitize_context_t::check_array<OT::Record<OT::Script> >(OT::Record<OT::Script> const*, unsigned int) const Line | Count | Source | 274 | 677k | { | 275 | 677k | return this->check_range (base, len, hb_static_size (T)); | 276 | 677k | } |
bool hb_sanitize_context_t::check_array<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*, unsigned int) const Line | Count | Source | 274 | 634k | { | 275 | 634k | return this->check_range (base, len, hb_static_size (T)); | 276 | 634k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 248k | { | 275 | 248k | return this->check_range (base, len, hb_static_size (T)); | 276 | 248k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.78k | { | 275 | 1.78k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.78k | } |
bool hb_sanitize_context_t::check_array<OT::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int) const Line | Count | Source | 274 | 7.79k | { | 275 | 7.79k | return this->check_range (base, len, hb_static_size (T)); | 276 | 7.79k | } |
bool hb_sanitize_context_t::check_array<OT::UVSMapping>(OT::UVSMapping const*, unsigned int) const Line | Count | Source | 274 | 25.7k | { | 275 | 25.7k | return this->check_range (base, len, hb_static_size (T)); | 276 | 25.7k | } |
bool hb_sanitize_context_t::check_array<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*, unsigned int) const Line | Count | Source | 274 | 9.38k | { | 275 | 9.38k | return this->check_range (base, len, hb_static_size (T)); | 276 | 9.38k | } |
bool hb_sanitize_context_t::check_array<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int) const Line | Count | Source | 274 | 102k | { | 275 | 102k | return this->check_range (base, len, hb_static_size (T)); | 276 | 102k | } |
bool hb_sanitize_context_t::check_array<OT::EncodingRecord>(OT::EncodingRecord const*, unsigned int) const Line | Count | Source | 274 | 246k | { | 275 | 246k | return this->check_range (base, len, hb_static_size (T)); | 276 | 246k | } |
bool hb_sanitize_context_t::check_array<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*, unsigned int) const Line | Count | Source | 274 | 537k | { | 275 | 537k | return this->check_range (base, len, hb_static_size (T)); | 276 | 537k | } |
bool hb_sanitize_context_t::check_array<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*, unsigned int) const Line | Count | Source | 274 | 629k | { | 275 | 629k | return this->check_range (base, len, hb_static_size (T)); | 276 | 629k | } |
bool hb_sanitize_context_t::check_array<OT::ClipRecord>(OT::ClipRecord const*, unsigned int) const Line | Count | Source | 274 | 23.4k | { | 275 | 23.4k | return this->check_range (base, len, hb_static_size (T)); | 276 | 23.4k | } |
bool hb_sanitize_context_t::check_array<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int) const Line | Count | Source | 274 | 87.8k | { | 275 | 87.8k | return this->check_range (base, len, hb_static_size (T)); | 276 | 87.8k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 56.1k | { | 275 | 56.1k | return this->check_range (base, len, hb_static_size (T)); | 276 | 56.1k | } |
bool hb_sanitize_context_t::check_array<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int) const Line | Count | Source | 274 | 100k | { | 275 | 100k | return this->check_range (base, len, hb_static_size (T)); | 276 | 100k | } |
bool hb_sanitize_context_t::check_array<OT::LayerRecord>(OT::LayerRecord const*, unsigned int) const Line | Count | Source | 274 | 97.8k | { | 275 | 97.8k | return this->check_range (base, len, hb_static_size (T)); | 276 | 97.8k | } |
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::IntType<short, 2u>, 14u> >(OT::HBFixed<OT::IntType<short, 2u>, 14u> const*, unsigned int) const Line | Count | Source | 274 | 18.1k | { | 275 | 18.1k | return this->check_range (base, len, hb_static_size (T)); | 276 | 18.1k | } |
bool hb_sanitize_context_t::check_array<OT::TableRecord>(OT::TableRecord const*, unsigned int) const Line | Count | Source | 274 | 477k | { | 275 | 477k | return this->check_range (base, len, hb_static_size (T)); | 276 | 477k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.94k | { | 275 | 1.94k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.94k | } |
bool hb_sanitize_context_t::check_array<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int) const Line | Count | Source | 274 | 1.33k | { | 275 | 1.33k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.33k | } |
bool hb_sanitize_context_t::check_array<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int) const Line | Count | Source | 274 | 193k | { | 275 | 193k | return this->check_range (base, len, hb_static_size (T)); | 276 | 193k | } |
bool hb_sanitize_context_t::check_array<OT::AxisRecord>(OT::AxisRecord const*, unsigned int) const Line | Count | Source | 274 | 31.5k | { | 275 | 31.5k | return this->check_range (base, len, hb_static_size (T)); | 276 | 31.5k | } |
bool hb_sanitize_context_t::check_array<OT::AxisValueMap>(OT::AxisValueMap const*, unsigned int) const Line | Count | Source | 274 | 107k | { | 275 | 107k | return this->check_range (base, len, hb_static_size (T)); | 276 | 107k | } |
bool hb_sanitize_context_t::check_array<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int) const Line | Count | Source | 274 | 1.29k | { | 275 | 1.29k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.29k | } |
bool hb_sanitize_context_t::check_array<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int) const Line | Count | Source | 274 | 4.91k | { | 275 | 4.91k | return this->check_range (base, len, hb_static_size (T)); | 276 | 4.91k | } |
bool hb_sanitize_context_t::check_array<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int) const Line | Count | Source | 274 | 14.2k | { | 275 | 14.2k | return this->check_range (base, len, hb_static_size (T)); | 276 | 14.2k | } |
bool hb_sanitize_context_t::check_array<OT::Offset<OT::IntType<unsigned int, 4u>, true> >(OT::Offset<OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.89k | { | 275 | 1.89k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.89k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 3.69k | { | 275 | 3.69k | return this->check_range (base, len, hb_static_size (T)); | 276 | 3.69k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::SBIXGlyph, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::IntType<unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 274 | 9.32k | { | 275 | 9.32k | return this->check_range (base, len, hb_static_size (T)); | 276 | 9.32k | } |
bool hb_sanitize_context_t::check_array<CFF::FDSelect3_4_Range<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > const*, unsigned int) const Line | Count | Source | 274 | 2.43k | { | 275 | 2.43k | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.43k | } |
bool hb_sanitize_context_t::check_array<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int) const Line | Count | Source | 274 | 222 | { | 275 | 222 | return this->check_range (base, len, hb_static_size (T)); | 276 | 222 | } |
bool hb_sanitize_context_t::check_array<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int) const Line | Count | Source | 274 | 141 | { | 275 | 141 | return this->check_range (base, len, hb_static_size (T)); | 276 | 141 | } |
bool hb_sanitize_context_t::check_array<unsigned char>(unsigned char const*, unsigned int) const Line | Count | Source | 274 | 2.61M | { | 275 | 2.61M | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.61M | } |
bool hb_sanitize_context_t::check_array<CFF::FDSelect3_4_Range<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > const*, unsigned int) const Line | Count | Source | 274 | 41 | { | 275 | 41 | return this->check_range (base, len, hb_static_size (T)); | 276 | 41 | } |
bool hb_sanitize_context_t::check_array<OT::DataMap>(OT::DataMap const*, unsigned int) const Line | Count | Source | 274 | 994 | { | 275 | 994 | return this->check_range (base, len, hb_static_size (T)); | 276 | 994 | } |
bool hb_sanitize_context_t::check_array<OT::NameRecord>(OT::NameRecord const*, unsigned int) const Line | Count | Source | 274 | 254k | { | 275 | 254k | return this->check_range (base, len, hb_static_size (T)); | 276 | 254k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 3.11M | { | 275 | 3.11M | return this->check_range (base, len, hb_static_size (T)); | 276 | 3.11M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 546k | { | 275 | 546k | return this->check_range (base, len, hb_static_size (T)); | 276 | 546k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 133k | { | 275 | 133k | return this->check_range (base, len, hb_static_size (T)); | 276 | 133k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 114k | { | 275 | 114k | return this->check_range (base, len, hb_static_size (T)); | 276 | 114k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 68.0k | { | 275 | 68.0k | return this->check_range (base, len, hb_static_size (T)); | 276 | 68.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 424k | { | 275 | 424k | return this->check_range (base, len, hb_static_size (T)); | 276 | 424k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 2.47M | { | 275 | 2.47M | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.47M | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 106k | { | 275 | 106k | return this->check_range (base, len, hb_static_size (T)); | 276 | 106k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 44.1k | { | 275 | 44.1k | return this->check_range (base, len, hb_static_size (T)); | 276 | 44.1k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 363k | { | 275 | 363k | return this->check_range (base, len, hb_static_size (T)); | 276 | 363k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> const*, unsigned int) const Line | Count | Source | 274 | 1.93k | { | 275 | 1.93k | return this->check_range (base, len, hb_static_size (T)); | 276 | 1.93k | } |
bool hb_sanitize_context_t::check_array<OT::VertOriginMetric>(OT::VertOriginMetric const*, unsigned int) const Line | Count | Source | 274 | 2.75k | { | 275 | 2.75k | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.75k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const bool hb_sanitize_context_t::check_array<OT::Tag>(OT::Tag const*, unsigned int) const Line | Count | Source | 274 | 19.5k | { | 275 | 19.5k | return this->check_range (base, len, hb_static_size (T)); | 276 | 19.5k | } |
bool hb_sanitize_context_t::check_array<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int) const Line | Count | Source | 274 | 18.3k | { | 275 | 18.3k | return this->check_range (base, len, hb_static_size (T)); | 276 | 18.3k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 103k | { | 275 | 103k | return this->check_range (base, len, hb_static_size (T)); | 276 | 103k | } |
bool hb_sanitize_context_t::check_array<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int) const Line | Count | Source | 274 | 2.12M | { | 275 | 2.12M | return this->check_range (base, len, hb_static_size (T)); | 276 | 2.12M | } |
bool hb_sanitize_context_t::check_array<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*, unsigned int) const Line | Count | Source | 274 | 198k | { | 275 | 198k | return this->check_range (base, len, hb_static_size (T)); | 276 | 198k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const bool hb_sanitize_context_t::check_array<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int) const Line | Count | Source | 274 | 361k | { | 275 | 361k | return this->check_range (base, len, hb_static_size (T)); | 276 | 361k | } |
bool hb_sanitize_context_t::check_array<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int) const Line | Count | Source | 274 | 7.43k | { | 275 | 7.43k | return this->check_range (base, len, hb_static_size (T)); | 276 | 7.43k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 274 | 7.04k | { | 275 | 7.04k | return this->check_range (base, len, hb_static_size (T)); | 276 | 7.04k | } |
bool hb_sanitize_context_t::check_array<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int) const Line | Count | Source | 274 | 163k | { | 275 | 163k | return this->check_range (base, len, hb_static_size (T)); | 276 | 163k | } |
bool hb_sanitize_context_t::check_array<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int) const Line | Count | Source | 274 | 281k | { | 275 | 281k | return this->check_range (base, len, hb_static_size (T)); | 276 | 281k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::GaspRange>(OT::GaspRange const*, unsigned int) const |
277 | | |
278 | | template <typename T> |
279 | | bool check_array (const T *base, |
280 | | unsigned int a, |
281 | | unsigned int b) const |
282 | 11.9M | { |
283 | 11.9M | return this->check_range (base, a, b, hb_static_size (T)); |
284 | 11.9M | } bool hb_sanitize_context_t::check_array<OT::IntType<short, 2u> >(OT::IntType<short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 282 | 11.2M | { | 283 | 11.2M | return this->check_range (base, a, b, hb_static_size (T)); | 284 | 11.2M | } |
bool hb_sanitize_context_t::check_array<OT::IntType<unsigned char, 1u> >(OT::IntType<unsigned char, 1u> const*, unsigned int, unsigned int) const Line | Count | Source | 282 | 627k | { | 283 | 627k | return this->check_range (base, a, b, hb_static_size (T)); | 284 | 627k | } |
|
285 | | |
286 | | bool check_start_recursion (int max_depth) |
287 | 8.07M | { |
288 | 8.07M | if (unlikely (recursion_depth >= max_depth)) return false; |
289 | 8.07M | return ++recursion_depth; |
290 | 8.07M | } |
291 | | |
292 | | bool end_recursion (bool result) |
293 | 8.07M | { |
294 | 8.07M | recursion_depth--; |
295 | 8.07M | return result; |
296 | 8.07M | } |
297 | | |
298 | | template <typename Type> |
299 | | bool check_struct (const Type *obj) const |
300 | 16.2G | { return likely (this->check_range (obj, obj->min_size)); } bool hb_sanitize_context_t::check_struct<OT::FixedVersion<OT::IntType<unsigned short, 2u> > >(OT::FixedVersion<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 1.35M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 2.14M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IntType<unsigned short, 2u> >(OT::IntType<unsigned short, 2u> const*) const Line | Count | Source | 300 | 4.81G | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::SmallTypes> >(OT::ClassDefFormat1_3<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 207k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::MediumTypes> >(OT::ClassDefFormat1_3<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 49.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IntType<unsigned int, 3u> >(OT::IntType<unsigned int, 3u> const*) const Line | Count | Source | 300 | 2.82M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AttachList, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 106k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 102M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 1.00M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 100k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 824k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 1.43G | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat1>(OT::CaretValueFormat1 const*) const Line | Count | Source | 300 | 20.2M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat2>(OT::CaretValueFormat2 const*) const Line | Count | Source | 300 | 9.26M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat3>(OT::CaretValueFormat3 const*) const Line | Count | Source | 300 | 6.78M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Device, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Device, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 826M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::HintingDevice>(OT::HintingDevice const*) const Line | Count | Source | 300 | 25.1M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VariationDevice>(OT::VariationDevice const*) const Line | Count | Source | 300 | 2.32M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 35.3k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 46.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 134k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VariationStore>(OT::VariationStore const*) const Line | Count | Source | 300 | 112k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarRegionList, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::VarRegionList, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 83.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VarRegionList>(OT::VarRegionList const*) const Line | Count | Source | 300 | 80.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 219k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VarData>(OT::VarData const*) const Line | Count | Source | 300 | 160k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 910k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::AttachList, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 11.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 8.73k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 7.82k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IntType<unsigned int, 4u> >(OT::IntType<unsigned int, 4u> const*) const Line | Count | Source | 300 | 74.9M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, void> >(AAT::StateTable<AAT::ExtendedTypes, void> const*) const Line | Count | Source | 300 | 5.55k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 52.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VarSizedBinSearchHeader>(OT::VarSizedBinSearchHeader const*) const Line | Count | Source | 300 | 33.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::IntType<unsigned short, 2u> > >(AAT::LookupSegmentArray<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 6.94k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 6.77k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::IntType<unsigned short, 2u> > >(AAT::LookupFormat8<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 11.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::IntType<unsigned short, 2u> > >(AAT::LookupFormat10<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 868 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*) const Line | Count | Source | 300 | 9.11k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false>, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false>, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 8.60k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 11.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::HBGlyphID16> >(AAT::LookupSegmentArray<OT::HBGlyphID16> const*) const Line | Count | Source | 300 | 2.38k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 2.33k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::HBGlyphID16> >(AAT::LookupFormat8<OT::HBGlyphID16> const*) const Line | Count | Source | 300 | 6.70k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::HBGlyphID16> >(AAT::LookupFormat10<OT::HBGlyphID16> const*) const Line | Count | Source | 300 | 123 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ExtendedTypes> >(AAT::LigatureSubtable<AAT::ExtendedTypes> const*) const Line | Count | Source | 300 | 8.04k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> const*) const Line | Count | Source | 300 | 8.04k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ExtendedTypes> >(AAT::InsertionSubtable<AAT::ExtendedTypes> const*) const Line | Count | Source | 300 | 15.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*) const Line | Count | Source | 300 | 15.1k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ltag>(AAT::ltag const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::FTStringRange>(AAT::FTStringRange const*) const bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, void> >(AAT::StateTable<AAT::ObsoleteTypes, void> const*) const Line | Count | Source | 300 | 23.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 46.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::IntType<unsigned char, 1u> > >(AAT::ClassTable<OT::IntType<unsigned char, 1u> > const*) const Line | Count | Source | 300 | 46.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*) const Line | Count | Source | 300 | 7.57k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 6.94k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*) const bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ObsoleteTypes> >(AAT::LigatureSubtable<AAT::ObsoleteTypes> const*) const Line | Count | Source | 300 | 5.46k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ObsoleteTypes> >(AAT::InsertionSubtable<AAT::ObsoleteTypes> const*) const Line | Count | Source | 300 | 16.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*) const Line | Count | Source | 300 | 16.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableHeader>(AAT::KerxSubTableHeader const*) const Line | Count | Source | 300 | 48.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::IntType<unsigned int, 4u> > >(OT::BinSearchHeader<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 2.14k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 300 | 2.85k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> const*) const Line | Count | Source | 300 | 2.82k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 300 | 1.35k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 300 | 5.38k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*) const Line | Count | Source | 300 | 5.35k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 300 | 5.15k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 5.87k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::IntType<unsigned int, 4u> > >(AAT::LookupSegmentArray<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 4.38k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 4.26k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::IntType<unsigned int, 4u> > >(AAT::LookupFormat8<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 408 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::IntType<unsigned int, 4u> > >(AAT::LookupFormat10<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 947 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::ankr>(AAT::ankr const*) const Line | Count | Source | 300 | 10.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 8.67k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 55.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > const*) const Line | Count | Source | 300 | 5.03k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > const*) const Line | Count | Source | 300 | 2.25k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 2.11k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > const*) const Line | Count | Source | 300 | 17.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> > const*) const Line | Count | Source | 300 | 288 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IntType<short, 2u> >(OT::IntType<short, 2u> const*) const Line | Count | Source | 300 | 660k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IntType<int, 4u> >(OT::IntType<int, 4u> const*) const Line | Count | Source | 300 | 57.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::trak>(AAT::trak const*) const Line | Count | Source | 300 | 3.56k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::TrackData, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::TrackData, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 5.14k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::TrackData>(AAT::TrackData const*) const Line | Count | Source | 300 | 3.15k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<int, 4u>, 16u> >, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<int, 4u>, 16u> >, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 2.81k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::TrackTableEntry>(AAT::TrackTableEntry const*) const Line | Count | Source | 300 | 555k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<short, 2u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 555k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::feat>(AAT::feat const*) const Line | Count | Source | 300 | 724 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::FeatureName>(AAT::FeatureName const*) const Line | Count | Source | 300 | 4.22k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LONGDATETIME>(OT::LONGDATETIME const*) const bool hb_sanitize_context_t::check_struct<OT::IntType<unsigned char, 1u> >(OT::IntType<unsigned char, 1u> const*) const Line | Count | Source | 300 | 8.52M | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Entry<void> >(AAT::Entry<void> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Anchor>(AAT::Anchor const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat0Part>(AAT::BaselineTableFormat0Part const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat1Part>(AAT::BaselineTableFormat1Part const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::IntType<unsigned short, 2u> > >(AAT::LookupSegmentSingle<OT::IntType<unsigned short, 2u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::IntType<unsigned short, 2u> > >(AAT::LookupSingle<OT::IntType<unsigned short, 2u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat2Part>(AAT::BaselineTableFormat2Part const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat3Part>(AAT::BaselineTableFormat3Part const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::bsln>(AAT::bsln const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::SettingName>(AAT::SettingName const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*) const bool hb_sanitize_context_t::check_struct<OT::FeatureParamsSize>(OT::FeatureParamsSize const*) const Line | Count | Source | 300 | 36.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsStylisticSet>(OT::FeatureParamsStylisticSet const*) const Line | Count | Source | 300 | 208k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsCharacterVariants>(OT::FeatureParamsCharacterVariants const*) const Line | Count | Source | 300 | 70.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Feature>(OT::Feature const*) const Line | Count | Source | 300 | 5.30M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 2.24M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::LangSys>(OT::LangSys const*) const Line | Count | Source | 300 | 52.2M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LangSys, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::LangSys, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 1.55G | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*) const Line | Count | Source | 300 | 1.55G | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VarRegionAxis>(OT::VarRegionAxis const*) const bool hb_sanitize_context_t::check_struct<OT::ConditionFormat1>(OT::ConditionFormat1 const*) const Line | Count | Source | 300 | 9.35k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 254k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*) const Line | Count | Source | 300 | 88.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Feature, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 88.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionSet, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::ConditionSet, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 94.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureTableSubstitution, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::FeatureTableSubstitution, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 92.9k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Feature>(AAT::Feature const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ActionSubrecordHeader>(AAT::ActionSubrecordHeader const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::DecompositionAction>(AAT::DecompositionAction const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::UnconditionalAddGlyphAction>(AAT::UnconditionalAddGlyphAction const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ConditionalAddGlyphAction>(AAT::ConditionalAddGlyphAction const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::DuctileGlyphAction>(AAT::DuctileGlyphAction const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::RepeatedAddGlyphAction>(AAT::RepeatedAddGlyphAction const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ActionSubrecord>(AAT::ActionSubrecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::PostcompensationActionChain>(AAT::PostcompensationActionChain const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::JustificationCategory>(AAT::JustificationCategory const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::HBGlyphID16> >(AAT::LookupSegmentSingle<OT::HBGlyphID16> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::HBGlyphID16> >(AAT::LookupSingle<OT::HBGlyphID16> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::JustificationHeader>(AAT::JustificationHeader const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::JustificationCategory, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::JustificationCategory, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::PostcompensationActionChain, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::PostcompensationActionChain, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::just>(AAT::just const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::JustificationHeader, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::JustificationHeader, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LookupRecord>(OT::LookupRecord const*) const bool hb_sanitize_context_t::check_struct<OT::ContextFormat3>(OT::ContextFormat3 const*) const Line | Count | Source | 300 | 95.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1>(OT::Layout::GPOS_impl::SinglePosFormat1 const*) const Line | Count | Source | 300 | 1.25M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat2>(OT::Layout::GPOS_impl::SinglePosFormat2 const*) const Line | Count | Source | 300 | 601k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat1>(OT::Layout::GPOS_impl::AnchorFormat1 const*) const Line | Count | Source | 300 | 88.5M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat2>(OT::Layout::GPOS_impl::AnchorFormat2 const*) const Line | Count | Source | 300 | 21.7M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat3>(OT::Layout::GPOS_impl::AnchorFormat3 const*) const Line | Count | Source | 300 | 16.6M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 3.66G | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix>(OT::Layout::GPOS_impl::AnchorMatrix const*) const Line | Count | Source | 300 | 93.0M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*) const Line | Count | Source | 300 | 614M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Lookup>(OT::Lookup const*) const Line | Count | Source | 300 | 5.29M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 162M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 329k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 4.44M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 2.27M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 276k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 71.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 2.89M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 438k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 129k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 171k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 268k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 674k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 170M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 163k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 619k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 398k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 163k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 160k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 221k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 219k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> const*) const Line | Count | Source | 300 | 248k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> const*) const Line | Count | Source | 300 | 242k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 1.07M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 5.24M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 338k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 3.67M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 395k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 3.95M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 43.2M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 622k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 9.29M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 475k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*) const Line | Count | Source | 300 | 83.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 704k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Script> >(OT::Record<OT::Script> const*) const Line | Count | Source | 300 | 5.42M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Script, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Script, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 5.42M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 658k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*) const Line | Count | Source | 300 | 9.60M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Feature, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 9.60M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 259k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 3.02M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureVariations, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::FeatureVariations, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 42.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 16.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 11.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 5.20k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 35.1k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KernPair>(AAT::KernPair const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::IntType<unsigned int, 4u> > >(AAT::LookupSegmentSingle<OT::IntType<unsigned int, 4u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::IntType<unsigned int, 4u> > >(AAT::LookupSingle<OT::IntType<unsigned int, 4u> > const*) const bool hb_sanitize_context_t::check_struct<OT::maxp>(OT::maxp const*) const Line | Count | Source | 300 | 245k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::maxpV1Tail>(OT::maxpV1Tail const*) const Line | Count | Source | 300 | 120k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::head>(OT::head const*) const Line | Count | Source | 300 | 215k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VariationValueRecord>(OT::VariationValueRecord const*) const bool hb_sanitize_context_t::check_struct<OT::MVAR>(OT::MVAR const*) const Line | Count | Source | 300 | 31.3k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 31.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OS2V1Tail>(OT::OS2V1Tail const*) const Line | Count | Source | 300 | 183k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OS2V2Tail>(OT::OS2V2Tail const*) const Line | Count | Source | 300 | 178k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OS2V5Tail>(OT::OS2V5Tail const*) const Line | Count | Source | 300 | 20.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OS2>(OT::OS2 const*) const Line | Count | Source | 300 | 196k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat0>(OT::CmapSubtableFormat0 const*) const Line | Count | Source | 300 | 86.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat4>(OT::CmapSubtableFormat4 const*) const Line | Count | Source | 300 | 312k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::UnicodeValueRange>(OT::UnicodeValueRange const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::UVSMapping>(OT::UVSMapping const*) const bool hb_sanitize_context_t::check_struct<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*) const Line | Count | Source | 300 | 52.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DefaultUVS, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::DefaultUVS, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 52.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NonDefaultUVS, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::NonDefaultUVS, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 51.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14>(OT::CmapSubtableFormat14 const*) const Line | Count | Source | 300 | 9.49k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::IntType<unsigned short, 2u> > >(OT::CmapSubtableTrimmed<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 25.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::IntType<unsigned int, 4u> > >(OT::CmapSubtableTrimmed<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 5.86k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> const*) const Line | Count | Source | 300 | 91.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> const*) const Line | Count | Source | 300 | 12.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::EncodingRecord>(OT::EncodingRecord const*) const Line | Count | Source | 300 | 909k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CmapSubtable, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::CmapSubtable, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 909k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::cmap>(OT::cmap const*) const Line | Count | Source | 300 | 287k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::IntType<unsigned short, 2u> > >(OT::DeltaSetIndexMapFormat01<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 34.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::IntType<unsigned int, 4u> > >(OT::DeltaSetIndexMapFormat01<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 3.66k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LayerRecord>(OT::LayerRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ColorStop>(OT::ColorStop const*) const bool hb_sanitize_context_t::check_struct<OT::Affine2x3>(OT::Affine2x3 const*) const Line | Count | Source | 300 | 44.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintColrLayers>(OT::PaintColrLayers const*) const Line | Count | Source | 300 | 546k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintSolid>(OT::PaintSolid const*) const Line | Count | Source | 300 | 957k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintGlyph>(OT::PaintGlyph const*) const Line | Count | Source | 300 | 2.04M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 3.73M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSolid> >(OT::NoVariable<OT::PaintSolid> const*) const Line | Count | Source | 300 | 907k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSolid> >(OT::Variable<OT::PaintSolid> const*) const Line | Count | Source | 300 | 50.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > const*) const Line | Count | Source | 300 | 166k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::NoVariable> >(OT::PaintLinearGradient<OT::NoVariable> const*) const Line | Count | Source | 300 | 165k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 634k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::NoVariable> >(OT::ColorLine<OT::NoVariable> const*) const Line | Count | Source | 300 | 576k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*) const bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintLinearGradient<OT::Variable> > >(OT::Variable<OT::PaintLinearGradient<OT::Variable> > const*) const Line | Count | Source | 300 | 35.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::Variable> >(OT::PaintLinearGradient<OT::Variable> const*) const Line | Count | Source | 300 | 35.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 670k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::Variable> >(OT::ColorLine<OT::Variable> const*) const Line | Count | Source | 300 | 645k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*) const bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > const*) const Line | Count | Source | 300 | 165k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::NoVariable> >(OT::PaintRadialGradient<OT::NoVariable> const*) const Line | Count | Source | 300 | 165k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRadialGradient<OT::Variable> > >(OT::Variable<OT::PaintRadialGradient<OT::Variable> > const*) const Line | Count | Source | 300 | 50.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::Variable> >(OT::PaintRadialGradient<OT::Variable> const*) const Line | Count | Source | 300 | 50.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > const*) const Line | Count | Source | 300 | 303k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::NoVariable> >(OT::PaintSweepGradient<OT::NoVariable> const*) const Line | Count | Source | 300 | 302k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSweepGradient<OT::Variable> > >(OT::Variable<OT::PaintSweepGradient<OT::Variable> > const*) const Line | Count | Source | 300 | 584k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::Variable> >(OT::PaintSweepGradient<OT::Variable> const*) const Line | Count | Source | 300 | 584k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::NoVariable> >(OT::PaintTransform<OT::NoVariable> const*) const Line | Count | Source | 300 | 115k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 74.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::Affine2x3> >(OT::NoVariable<OT::Affine2x3> const*) const Line | Count | Source | 300 | 56.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::Variable> >(OT::PaintTransform<OT::Variable> const*) const Line | Count | Source | 300 | 31.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 31.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::Affine2x3> >(OT::Variable<OT::Affine2x3> const*) const Line | Count | Source | 300 | 24.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintTranslate> >(OT::NoVariable<OT::PaintTranslate> const*) const Line | Count | Source | 300 | 38.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintTranslate> >(OT::Variable<OT::PaintTranslate> const*) const Line | Count | Source | 300 | 47.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScale> >(OT::NoVariable<OT::PaintScale> const*) const Line | Count | Source | 300 | 105k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScale> >(OT::Variable<OT::PaintScale> const*) const Line | Count | Source | 300 | 20.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleAroundCenter> >(OT::NoVariable<OT::PaintScaleAroundCenter> const*) const Line | Count | Source | 300 | 18.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleAroundCenter> >(OT::Variable<OT::PaintScaleAroundCenter> const*) const Line | Count | Source | 300 | 27.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniform> >(OT::NoVariable<OT::PaintScaleUniform> const*) const Line | Count | Source | 300 | 18.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniform> >(OT::Variable<OT::PaintScaleUniform> const*) const Line | Count | Source | 300 | 24.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniformAroundCenter> >(OT::NoVariable<OT::PaintScaleUniformAroundCenter> const*) const Line | Count | Source | 300 | 228k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniformAroundCenter> >(OT::Variable<OT::PaintScaleUniformAroundCenter> const*) const Line | Count | Source | 300 | 22.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotate> >(OT::NoVariable<OT::PaintRotate> const*) const Line | Count | Source | 300 | 22.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotate> >(OT::Variable<OT::PaintRotate> const*) const Line | Count | Source | 300 | 16.3k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotateAroundCenter> >(OT::NoVariable<OT::PaintRotateAroundCenter> const*) const Line | Count | Source | 300 | 20.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotateAroundCenter> >(OT::Variable<OT::PaintRotateAroundCenter> const*) const Line | Count | Source | 300 | 28.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkew> >(OT::NoVariable<OT::PaintSkew> const*) const Line | Count | Source | 300 | 15.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkew> >(OT::Variable<OT::PaintSkew> const*) const Line | Count | Source | 300 | 21.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkewAroundCenter> >(OT::NoVariable<OT::PaintSkewAroundCenter> const*) const Line | Count | Source | 300 | 24.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkewAroundCenter> >(OT::Variable<OT::PaintSkewAroundCenter> const*) const Line | Count | Source | 300 | 29.3k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintColrGlyph>(OT::PaintColrGlyph const*) const Line | Count | Source | 300 | 63.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintTranslate>(OT::PaintTranslate const*) const Line | Count | Source | 300 | 84.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintScale>(OT::PaintScale const*) const Line | Count | Source | 300 | 125k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleAroundCenter>(OT::PaintScaleAroundCenter const*) const Line | Count | Source | 300 | 46.3k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniform>(OT::PaintScaleUniform const*) const Line | Count | Source | 300 | 42.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniformAroundCenter>(OT::PaintScaleUniformAroundCenter const*) const Line | Count | Source | 300 | 250k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintRotate>(OT::PaintRotate const*) const Line | Count | Source | 300 | 38.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintRotateAroundCenter>(OT::PaintRotateAroundCenter const*) const Line | Count | Source | 300 | 48.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintSkew>(OT::PaintSkew const*) const Line | Count | Source | 300 | 37.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintSkewAroundCenter>(OT::PaintSkewAroundCenter const*) const Line | Count | Source | 300 | 53.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::PaintComposite>(OT::PaintComposite const*) const Line | Count | Source | 300 | 410k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ClipBoxFormat1>(OT::ClipBoxFormat1 const*) const Line | Count | Source | 300 | 39.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ClipRecord>(OT::ClipRecord const*) const Line | Count | Source | 300 | 116k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipBox, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::ClipBox, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 116k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ClipBoxFormat1> >(OT::Variable<OT::ClipBoxFormat1> const*) const Line | Count | Source | 300 | 13.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ClipList>(OT::ClipList const*) const Line | Count | Source | 300 | 34.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*) const Line | Count | Source | 300 | 2.75M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 4.85M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::COLR>(OT::COLR const*) const Line | Count | Source | 300 | 101k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseGlyphList, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::BaseGlyphList, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 95.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LayerList, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::LayerList, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 74.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipList, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::ClipList, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 59.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DeltaSetIndexMap, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::DeltaSetIndexMap, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 159k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::hhea> >(OT::_hea<OT::hhea> const*) const Line | Count | Source | 300 | 210k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::vhea> >(OT::_hea<OT::vhea> const*) const Line | Count | Source | 300 | 10.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::gvar>(OT::gvar const*) const Line | Count | Source | 300 | 30.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<short, 2u>, 14u> >, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<short, 2u>, 14u> >, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 18.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OpenTypeOffsetTable>(OT::OpenTypeOffsetTable const*) const Line | Count | Source | 300 | 486k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::IntType<unsigned short, 2u> > >(OT::BinSearchHeader<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 483k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 42.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ResourceForkHeader>(OT::ResourceForkHeader const*) const Line | Count | Source | 300 | 1.60k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 3.83k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ResourceMap, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::ResourceMap, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 1.39k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ResourceMap>(OT::ResourceMap const*) const Line | Count | Source | 300 | 1.39k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 1.35k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*) const Line | Count | Source | 300 | 193k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 193k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ResourceRecord>(OT::ResourceRecord const*) const Line | Count | Source | 300 | 23.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<OT::IntType<unsigned char, 1u>, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 3u>, false> >(OT::OffsetTo<OT::ArrayOf<OT::IntType<unsigned char, 1u>, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 3u>, false> const*) const Line | Count | Source | 300 | 23.1k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::TableRecord>(OT::TableRecord const*) const bool hb_sanitize_context_t::check_struct<OT::fvar>(OT::fvar const*) const Line | Count | Source | 300 | 32.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::avar>(OT::avar const*) const Line | Count | Source | 300 | 23.1k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueMap>(OT::AxisValueMap const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::InstanceRecord>(OT::InstanceRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisRecord>(OT::AxisRecord const*) const bool hb_sanitize_context_t::check_struct<OT::CPAL>(OT::CPAL const*) const Line | Count | Source | 300 | 21.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CPALV1Tail>(OT::CPALV1Tail const*) const Line | Count | Source | 300 | 2.24k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::SVG>(OT::SVG const*) const Line | Count | Source | 300 | 5.30k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CBLC>(OT::CBLC const*) const Line | Count | Source | 300 | 5.31k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BitmapSizeTable>(OT::BitmapSizeTable const*) const Line | Count | Source | 300 | 14.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtableArray, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::IndexSubtableArray, OT::IntType<unsigned int, 4u>, false> const*) const Line | Count | Source | 300 | 14.2k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*) const Line | Count | Source | 300 | 108k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtable, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::IndexSubtable, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 108k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableHeader>(OT::IndexSubtableHeader const*) const Line | Count | Source | 300 | 21.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::IntType<unsigned int, 4u> > >(OT::IndexSubtableFormat1Or3<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 1.89k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::IntType<unsigned short, 2u> > >(OT::IndexSubtableFormat1Or3<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 1.82k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::SBitLineMetrics>(OT::SBitLineMetrics const*) const Line | Count | Source | 300 | 25.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::CBDT>(OT::CBDT const*) const Line | Count | Source | 300 | 2.39k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::sbix>(OT::sbix const*) const Line | Count | Source | 300 | 3.81k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> >(OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> const*) const Line | Count | Source | 300 | 35.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::SBIXStrike>(OT::SBIXStrike const*) const Line | Count | Source | 300 | 18.1k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SmallGlyphMetrics>(OT::SmallGlyphMetrics const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*) const bool hb_sanitize_context_t::check_struct<CFF::FDSelect0>(CFF::FDSelect0 const*) const Line | Count | Source | 300 | 1.75k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect>(CFF::FDSelect const*) const Line | Count | Source | 300 | 4.26k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > >(CFF::FDSelect3_4<OT::IntType<unsigned short, 2u>, OT::IntType<unsigned char, 1u> > const*) const Line | Count | Source | 300 | 2.44k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::Encoding1_Range>(CFF::Encoding1_Range const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::SuppEncoding>(CFF::SuppEncoding const*) const bool hb_sanitize_context_t::check_struct<CFF::Encoding>(CFF::Encoding const*) const Line | Count | Source | 300 | 489 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset0>(CFF::Charset0 const*) const Line | Count | Source | 300 | 13.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset>(CFF::Charset const*) const Line | Count | Source | 300 | 37.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset1_2<OT::IntType<unsigned char, 1u> > >(CFF::Charset1_2<OT::IntType<unsigned char, 1u> > const*) const Line | Count | Source | 300 | 22.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::IntType<unsigned char, 1u> > >(CFF::Charset_Range<OT::IntType<unsigned char, 1u> > const*) const Line | Count | Source | 300 | 1.15M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset1_2<OT::IntType<unsigned short, 2u> > >(CFF::Charset1_2<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 837 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::IntType<unsigned short, 2u> > >(CFF::Charset_Range<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 175k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::cff1>(OT::cff1 const*) const Line | Count | Source | 300 | 56.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::CFFIndex<OT::IntType<unsigned short, 2u> > >(CFF::CFFIndex<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 251k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::CFF2FDSelect>(CFF::CFF2FDSelect const*) const Line | Count | Source | 300 | 148 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > >(CFF::FDSelect3_4<OT::IntType<unsigned int, 4u>, OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 52 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::CFF2VariationStore>(CFF::CFF2VariationStore const*) const Line | Count | Source | 300 | 14.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::cff2>(OT::cff2 const*) const Line | Count | Source | 300 | 49.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<CFF::CFFIndex<OT::IntType<unsigned int, 4u> > >(CFF::CFFIndex<OT::IntType<unsigned int, 4u> > const*) const Line | Count | Source | 300 | 130k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::KernOTSubTableHeader>(OT::KernOTSubTableHeader const*) const Line | Count | Source | 300 | 102k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::KernAATSubTableHeader>(OT::KernAATSubTableHeader const*) const Line | Count | Source | 300 | 15.2k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> const*) const bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> const*) const Line | Count | Source | 300 | 687 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 5.30k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::IntType<unsigned short, 2u> > >(AAT::ClassTable<OT::IntType<unsigned short, 2u> > const*) const Line | Count | Source | 300 | 5.30k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernOTSubTableHeader> >(OT::KernSubTableFormat3<OT::KernOTSubTableHeader> const*) const bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 300 | 1.21k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 300 | 2.07k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernAATSubTableHeader> >(OT::KernSubTableFormat3<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 300 | 396 | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::DataMap>(OT::DataMap const*) const Line | Count | Source | 300 | 2.25k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::meta>(OT::meta const*) const Line | Count | Source | 300 | 3.71k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::NameRecord>(OT::NameRecord const*) const Line | Count | Source | 300 | 10.5M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> const*) const Line | Count | Source | 300 | 10.5M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::name>(OT::name const*) const Line | Count | Source | 300 | 183k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::post>(OT::post const*) const Line | Count | Source | 300 | 164k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 168M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 16.4M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 502k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 3.19M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 811k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 5.76M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 33.0M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 251k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 11.4M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> >(OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*) const Line | Count | Source | 300 | 269k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 369k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 4.51M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 4.92k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> const*) const Line | Count | Source | 300 | 41.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::VORG>(OT::VORG const*) const Line | Count | Source | 300 | 7.21k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::StatAxisRecord>(OT::StatAxisRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat1>(OT::AxisValueFormat1 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat2>(OT::AxisValueFormat2 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat3>(OT::AxisValueFormat3 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueRecord>(OT::AxisValueRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat4>(OT::AxisValueFormat4 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValue>(OT::AxisValue const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::STAT>(OT::STAT const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::IntType<unsigned int, 4u>, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValueOffsetArray, OT::IntType<unsigned int, 4u>, false> >(OT::OffsetTo<OT::AxisValueOffsetArray, OT::IntType<unsigned int, 4u>, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VertOriginMetric>(OT::VertOriginMetric const*) const bool hb_sanitize_context_t::check_struct<OT::BASE>(OT::BASE const*) const Line | Count | Source | 300 | 23.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Axis, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::Axis, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 31.6k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::Axis>(OT::Axis const*) const Line | Count | Source | 300 | 21.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseScriptList>(OT::BaseScriptList const*) const Line | Count | Source | 300 | 18.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseScriptRecord>(OT::BaseScriptRecord const*) const Line | Count | Source | 300 | 744k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseScript, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::BaseScript, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 743k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseScript>(OT::BaseScript const*) const Line | Count | Source | 300 | 209k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseValues, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::BaseValues, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 202k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseValues>(OT::BaseValues const*) const Line | Count | Source | 300 | 106k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 10.4M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat1>(OT::BaseCoordFormat1 const*) const Line | Count | Source | 300 | 113k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2>(OT::BaseCoordFormat2 const*) const Line | Count | Source | 300 | 53.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat3>(OT::BaseCoordFormat3 const*) const Line | Count | Source | 300 | 52.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MinMax, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MinMax, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 46.3M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MinMax>(OT::MinMax const*) const Line | Count | Source | 300 | 2.13M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*) const Line | Count | Source | 300 | 2.72M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*) const Line | Count | Source | 300 | 46.1M | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::JstfPriority>(OT::JstfPriority const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexArray, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::IndexArray, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfLangSys, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::JstfLangSys, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfScript, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::JstfScript, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::OpticalBounds>(AAT::OpticalBounds const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat0>(AAT::opbdFormat0 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > >(AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat1>(AAT::opbdFormat1 const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbd>(AAT::opbd const*) const bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathConstants, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathConstants, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 16.5k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathConstants>(OT::MathConstants const*) const Line | Count | Source | 300 | 15.4k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathValueRecord>(OT::MathValueRecord const*) const Line | Count | Source | 300 | 383M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphInfo, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathGlyphInfo, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 13.8k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphInfo>(OT::MathGlyphInfo const*) const Line | Count | Source | 300 | 12.7k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 11.9k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathItalicsCorrectionInfo>(OT::MathItalicsCorrectionInfo const*) const Line | Count | Source | 300 | 9.83k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathTopAccentAttachment, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathTopAccentAttachment, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 11.0k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathTopAccentAttachment>(OT::MathTopAccentAttachment const*) const Line | Count | Source | 300 | 9.00k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKernInfo, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathKernInfo, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 10.1k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathKernInfo>(OT::MathKernInfo const*) const Line | Count | Source | 300 | 8.04k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKern, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathKern, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 917k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathKern>(OT::MathKern const*) const Line | Count | Source | 300 | 346k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathVariants, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathVariants, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 9.96k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathVariants>(OT::MathVariants const*) const Line | Count | Source | 300 | 7.50k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 1.67M | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphConstruction>(OT::MathGlyphConstruction const*) const Line | Count | Source | 300 | 286k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphAssembly, OT::IntType<unsigned short, 2u>, true> >(OT::OffsetTo<OT::MathGlyphAssembly, OT::IntType<unsigned short, 2u>, true> const*) const Line | Count | Source | 300 | 282k | { return likely (this->check_range (obj, obj->min_size)); } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphAssembly>(OT::MathGlyphAssembly const*) const Line | Count | Source | 300 | 167k | { return likely (this->check_range (obj, obj->min_size)); } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::GaspRange>(OT::GaspRange const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::gasp>(OT::gasp const*) const |
301 | | |
302 | | bool may_edit (const void *base, unsigned int len) |
303 | 6.17M | { |
304 | 6.17M | if (this->edit_count >= HB_SANITIZE_MAX_EDITS) |
305 | 263k | return false; |
306 | | |
307 | 5.91M | const char *p = (const char *) base; |
308 | 5.91M | this->edit_count++; |
309 | | |
310 | 5.91M | DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0, |
311 | 5.91M | "may_edit(%u) [%p..%p] (%u bytes) in [%p..%p] -> %s", |
312 | 5.91M | this->edit_count, |
313 | 5.91M | p, p + len, len, |
314 | 5.91M | this->start, this->end, |
315 | 5.91M | this->writable ? "GRANTED" : "DENIED"); |
316 | | |
317 | 5.91M | return this->writable; |
318 | 6.17M | } |
319 | | |
320 | | template <typename Type, typename ValueType> |
321 | | bool try_set (const Type *obj, const ValueType &v) |
322 | 6.17M | { |
323 | 6.17M | if (this->may_edit (obj, hb_static_size (Type))) |
324 | 4.93M | { |
325 | 4.93M | * const_cast<Type *> (obj) = v; |
326 | 4.93M | return true; |
327 | 4.93M | } |
328 | 1.23M | return false; |
329 | 6.17M | } bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 38.6k | { | 323 | 38.6k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 28.5k | { | 325 | 28.5k | * const_cast<Type *> (obj) = v; | 326 | 28.5k | return true; | 327 | 28.5k | } | 328 | 10.0k | return false; | 329 | 38.6k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 140k | { | 323 | 140k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 125k | { | 325 | 125k | * const_cast<Type *> (obj) = v; | 326 | 125k | return true; | 327 | 125k | } | 328 | 15.3k | return false; | 329 | 140k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::AttachPoint, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 24.9k | { | 323 | 24.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 22.9k | { | 325 | 22.9k | * const_cast<Type *> (obj) = v; | 326 | 22.9k | return true; | 327 | 22.9k | } | 328 | 1.93k | return false; | 329 | 24.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::AttachList, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::AttachList, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 14.3k | { | 323 | 14.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 8.31k | { | 325 | 8.31k | * const_cast<Type *> (obj) = v; | 326 | 8.31k | return true; | 327 | 8.31k | } | 328 | 5.99k | return false; | 329 | 14.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Device, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Device, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 164k | { | 323 | 164k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 153k | { | 325 | 153k | * const_cast<Type *> (obj) = v; | 326 | 153k | return true; | 327 | 153k | } | 328 | 10.9k | return false; | 329 | 164k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::CaretValue, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 33.2k | { | 323 | 33.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 31.5k | { | 325 | 31.5k | * const_cast<Type *> (obj) = v; | 326 | 31.5k | return true; | 327 | 31.5k | } | 328 | 1.69k | return false; | 329 | 33.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::LigGlyph, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 20.4k | { | 323 | 20.4k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 17.6k | { | 325 | 17.6k | * const_cast<Type *> (obj) = v; | 326 | 17.6k | return true; | 327 | 17.6k | } | 328 | 2.81k | return false; | 329 | 20.4k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 15.1k | { | 323 | 15.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 8.03k | { | 325 | 8.03k | * const_cast<Type *> (obj) = v; | 326 | 8.03k | return true; | 327 | 8.03k | } | 328 | 7.13k | return false; | 329 | 15.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 5.84k | { | 323 | 5.84k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 5.46k | { | 325 | 5.46k | * const_cast<Type *> (obj) = v; | 326 | 5.46k | return true; | 327 | 5.46k | } | 328 | 377 | return false; | 329 | 5.84k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 982 | { | 323 | 982 | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 553 | { | 325 | 553 | * const_cast<Type *> (obj) = v; | 326 | 553 | return true; | 327 | 553 | } | 328 | 429 | return false; | 329 | 982 | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::VarRegionList, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::VarRegionList, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 7.10k | { | 323 | 7.10k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.62k | { | 325 | 3.62k | * const_cast<Type *> (obj) = v; | 326 | 3.62k | return true; | 327 | 3.62k | } | 328 | 3.48k | return false; | 329 | 7.10k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::VarData, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 40.0k | { | 323 | 40.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 34.4k | { | 325 | 34.4k | * const_cast<Type *> (obj) = v; | 326 | 34.4k | return true; | 327 | 34.4k | } | 328 | 5.53k | return false; | 329 | 40.0k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 31.7k | { | 323 | 31.7k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 22.0k | { | 325 | 22.0k | * const_cast<Type *> (obj) = v; | 326 | 22.0k | return true; | 327 | 22.0k | } | 328 | 9.69k | return false; | 329 | 31.7k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ClassDef, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 36.7k | { | 323 | 36.7k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 31.0k | { | 325 | 31.0k | * const_cast<Type *> (obj) = v; | 326 | 31.0k | return true; | 327 | 31.0k | } | 328 | 5.76k | return false; | 329 | 36.7k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::AttachList, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::AttachList, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 5.94k | { | 323 | 5.94k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.49k | { | 325 | 3.49k | * const_cast<Type *> (obj) = v; | 326 | 3.49k | return true; | 327 | 3.49k | } | 328 | 2.45k | return false; | 329 | 5.94k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::LigCaretList, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 3.76k | { | 323 | 3.76k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.33k | { | 325 | 3.33k | * const_cast<Type *> (obj) = v; | 326 | 3.33k | return true; | 327 | 3.33k | } | 328 | 427 | return false; | 329 | 3.76k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::MarkGlyphSets, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 1.64k | { | 323 | 1.64k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.55k | { | 325 | 1.55k | * const_cast<Type *> (obj) = v; | 326 | 1.55k | return true; | 327 | 1.55k | } | 328 | 97 | return false; | 329 | 1.64k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 4.89k | { | 323 | 4.89k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 2.20k | { | 325 | 2.20k | * const_cast<Type *> (obj) = v; | 326 | 2.20k | return true; | 327 | 2.20k | } | 328 | 2.68k | return false; | 329 | 4.89k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::TrackData, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<AAT::TrackData, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 1.75k | { | 323 | 1.75k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 933 | { | 325 | 933 | * const_cast<Type *> (obj) = v; | 326 | 933 | return true; | 327 | 933 | } | 328 | 820 | return false; | 329 | 1.75k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 13.0k | { | 323 | 13.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 12.0k | { | 325 | 12.0k | * const_cast<Type *> (obj) = v; | 326 | 12.0k | return true; | 327 | 12.0k | } | 328 | 1.05k | return false; | 329 | 13.0k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true>, unsigned int>(OT::OffsetTo<OT::FeatureParams, OT::IntType<unsigned short, 2u>, true> const*, unsigned int const&) Line | Count | Source | 322 | 1.71k | { | 323 | 1.71k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.70k | { | 325 | 1.70k | * const_cast<Type *> (obj) = v; | 326 | 1.70k | return true; | 327 | 1.70k | } | 328 | 2 | return false; | 329 | 1.71k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::LangSys, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::LangSys, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 165k | { | 323 | 165k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 142k | { | 325 | 142k | * const_cast<Type *> (obj) = v; | 326 | 142k | return true; | 327 | 142k | } | 328 | 22.7k | return false; | 329 | 165k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::Condition, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 16.2k | { | 323 | 16.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 15.4k | { | 325 | 15.4k | * const_cast<Type *> (obj) = v; | 326 | 15.4k | return true; | 327 | 15.4k | } | 328 | 827 | return false; | 329 | 16.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Feature, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::Feature, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 10.9k | { | 323 | 10.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 10.5k | { | 325 | 10.5k | * const_cast<Type *> (obj) = v; | 326 | 10.5k | return true; | 327 | 10.5k | } | 328 | 447 | return false; | 329 | 10.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ConditionSet, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::ConditionSet, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 17.1k | { | 323 | 17.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 15.6k | { | 325 | 15.6k | * const_cast<Type *> (obj) = v; | 326 | 15.6k | return true; | 327 | 15.6k | } | 328 | 1.43k | return false; | 329 | 17.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::FeatureTableSubstitution, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::FeatureTableSubstitution, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 23.5k | { | 323 | 23.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 22.3k | { | 325 | 22.3k | * const_cast<Type *> (obj) = v; | 326 | 22.3k | return true; | 327 | 22.3k | } | 328 | 1.21k | return false; | 329 | 23.5k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned short, 2u>, false>, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::JustificationCategory, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<AAT::JustificationCategory, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::PostcompensationActionChain, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<AAT::PostcompensationActionChain, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::JustificationHeader, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<AAT::JustificationHeader, OT::IntType<unsigned short, 2u>, true> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 149k | { | 323 | 149k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 139k | { | 325 | 139k | * const_cast<Type *> (obj) = v; | 326 | 139k | return true; | 327 | 139k | } | 328 | 10.0k | return false; | 329 | 149k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 75.6k | { | 323 | 75.6k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 67.4k | { | 325 | 67.4k | * const_cast<Type *> (obj) = v; | 326 | 67.4k | return true; | 327 | 67.4k | } | 328 | 8.16k | return false; | 329 | 75.6k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::Common::Coverage, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 109k | { | 323 | 109k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 95.1k | { | 325 | 95.1k | * const_cast<Type *> (obj) = v; | 326 | 95.1k | return true; | 327 | 95.1k | } | 328 | 14.1k | return false; | 329 | 109k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 44.3k | { | 323 | 44.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 42.2k | { | 325 | 42.2k | * const_cast<Type *> (obj) = v; | 326 | 42.2k | return true; | 327 | 42.2k | } | 328 | 2.12k | return false; | 329 | 44.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 17.2k | { | 323 | 17.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 11.3k | { | 325 | 11.3k | * const_cast<Type *> (obj) = v; | 326 | 11.3k | return true; | 327 | 11.3k | } | 328 | 5.93k | return false; | 329 | 17.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 38.9k | { | 323 | 38.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 34.0k | { | 325 | 34.0k | * const_cast<Type *> (obj) = v; | 326 | 34.0k | return true; | 327 | 34.0k | } | 328 | 4.90k | return false; | 329 | 38.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 17.0k | { | 323 | 17.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 15.5k | { | 325 | 15.5k | * const_cast<Type *> (obj) = v; | 326 | 15.5k | return true; | 327 | 15.5k | } | 328 | 1.47k | return false; | 329 | 17.0k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 12.9k | { | 323 | 12.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 12.4k | { | 325 | 12.4k | * const_cast<Type *> (obj) = v; | 326 | 12.4k | return true; | 327 | 12.4k | } | 328 | 536 | return false; | 329 | 12.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 4.87k | { | 323 | 4.87k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.41k | { | 325 | 3.41k | * const_cast<Type *> (obj) = v; | 326 | 3.41k | return true; | 327 | 3.41k | } | 328 | 1.45k | return false; | 329 | 4.87k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 4.72k | { | 323 | 4.72k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 4.25k | { | 325 | 4.25k | * const_cast<Type *> (obj) = v; | 326 | 4.25k | return true; | 327 | 4.25k | } | 328 | 473 | return false; | 329 | 4.72k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 93.2k | { | 323 | 93.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 88.7k | { | 325 | 88.7k | * const_cast<Type *> (obj) = v; | 326 | 88.7k | return true; | 327 | 88.7k | } | 328 | 4.45k | return false; | 329 | 93.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 24.1k | { | 323 | 24.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 17.9k | { | 325 | 17.9k | * const_cast<Type *> (obj) = v; | 326 | 17.9k | return true; | 327 | 17.9k | } | 328 | 6.14k | return false; | 329 | 24.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 25.3k | { | 323 | 25.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 24.1k | { | 325 | 24.1k | * const_cast<Type *> (obj) = v; | 326 | 24.1k | return true; | 327 | 24.1k | } | 328 | 1.16k | return false; | 329 | 25.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 19.1k | { | 323 | 19.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 17.1k | { | 325 | 17.1k | * const_cast<Type *> (obj) = v; | 326 | 17.1k | return true; | 327 | 17.1k | } | 328 | 1.97k | return false; | 329 | 19.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 18.5k | { | 323 | 18.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 17.5k | { | 325 | 17.5k | * const_cast<Type *> (obj) = v; | 326 | 17.5k | return true; | 327 | 17.5k | } | 328 | 942 | return false; | 329 | 18.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 156k | { | 323 | 156k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 146k | { | 325 | 146k | * const_cast<Type *> (obj) = v; | 326 | 146k | return true; | 327 | 146k | } | 328 | 9.56k | return false; | 329 | 156k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 39.6k | { | 323 | 39.6k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 27.1k | { | 325 | 27.1k | * const_cast<Type *> (obj) = v; | 326 | 27.1k | return true; | 327 | 27.1k | } | 328 | 12.4k | return false; | 329 | 39.6k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 62.3k | { | 323 | 62.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 59.8k | { | 325 | 59.8k | * const_cast<Type *> (obj) = v; | 326 | 59.8k | return true; | 327 | 59.8k | } | 328 | 2.57k | return false; | 329 | 62.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 42.5k | { | 323 | 42.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 37.7k | { | 325 | 37.7k | * const_cast<Type *> (obj) = v; | 326 | 37.7k | return true; | 327 | 37.7k | } | 328 | 4.82k | return false; | 329 | 42.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 14.6k | { | 323 | 14.6k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 13.8k | { | 325 | 13.8k | * const_cast<Type *> (obj) = v; | 326 | 13.8k | return true; | 327 | 13.8k | } | 328 | 794 | return false; | 329 | 14.6k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 611k | { | 323 | 611k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 536k | { | 325 | 536k | * const_cast<Type *> (obj) = v; | 326 | 536k | return true; | 327 | 536k | } | 328 | 75.4k | return false; | 329 | 611k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Script, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Script, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 87.0k | { | 323 | 87.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 52.6k | { | 325 | 52.6k | * const_cast<Type *> (obj) = v; | 326 | 52.6k | return true; | 327 | 52.6k | } | 328 | 34.4k | return false; | 329 | 87.0k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 58.7k | { | 323 | 58.7k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 13.2k | { | 325 | 13.2k | * const_cast<Type *> (obj) = v; | 326 | 13.2k | return true; | 327 | 13.2k | } | 328 | 45.4k | return false; | 329 | 58.7k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Feature, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Feature, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 150k | { | 323 | 150k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 130k | { | 325 | 130k | * const_cast<Type *> (obj) = v; | 326 | 130k | return true; | 327 | 130k | } | 328 | 20.4k | return false; | 329 | 150k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 45.5k | { | 323 | 45.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 16.9k | { | 325 | 16.9k | * const_cast<Type *> (obj) = v; | 326 | 16.9k | return true; | 327 | 16.9k | } | 328 | 28.5k | return false; | 329 | 45.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 283k | { | 323 | 283k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 195k | { | 325 | 195k | * const_cast<Type *> (obj) = v; | 326 | 195k | return true; | 327 | 195k | } | 328 | 87.7k | return false; | 329 | 283k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 97.9k | { | 323 | 97.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 8.19k | { | 325 | 8.19k | * const_cast<Type *> (obj) = v; | 326 | 8.19k | return true; | 327 | 8.19k | } | 328 | 89.7k | return false; | 329 | 97.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::FeatureVariations, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::FeatureVariations, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 15.4k | { | 323 | 15.4k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 11.6k | { | 325 | 11.6k | * const_cast<Type *> (obj) = v; | 326 | 11.6k | return true; | 327 | 11.6k | } | 328 | 3.81k | return false; | 329 | 15.4k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::RecordListOfScript, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 8.00k | { | 323 | 8.00k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.38k | { | 325 | 3.38k | * const_cast<Type *> (obj) = v; | 326 | 3.38k | return true; | 327 | 3.38k | } | 328 | 4.62k | return false; | 329 | 8.00k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 5.55k | { | 323 | 5.55k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 4.29k | { | 325 | 4.29k | * const_cast<Type *> (obj) = v; | 326 | 4.29k | return true; | 327 | 4.29k | } | 328 | 1.25k | return false; | 329 | 5.55k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 11.8k | { | 323 | 11.8k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 11.3k | { | 325 | 11.3k | * const_cast<Type *> (obj) = v; | 326 | 11.3k | return true; | 327 | 11.3k | } | 328 | 478 | return false; | 329 | 11.8k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 2.07k | { | 323 | 2.07k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.52k | { | 325 | 1.52k | * const_cast<Type *> (obj) = v; | 326 | 1.52k | return true; | 327 | 1.52k | } | 328 | 559 | return false; | 329 | 2.07k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<AAT::Lookup<OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<short, 2u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<int, 4u>, 16u> >, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<int, 4u>, 16u> >, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false>, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::IntType<unsigned int, 4u>, false>, OT::IntType<unsigned int, 4u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::VariationStore, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 7.14k | { | 323 | 7.14k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.98k | { | 325 | 1.98k | * const_cast<Type *> (obj) = v; | 326 | 1.98k | return true; | 327 | 1.98k | } | 328 | 5.16k | return false; | 329 | 7.14k | } |
bool hb_sanitize_context_t::try_set<OT::IntType<unsigned short, 2u>, unsigned short>(OT::IntType<unsigned short, 2u> const*, unsigned short const&) Line | Count | Source | 322 | 18.2k | { | 323 | 18.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 9.82k | { | 325 | 9.82k | * const_cast<Type *> (obj) = v; | 326 | 9.82k | return true; | 327 | 9.82k | } | 328 | 8.47k | return false; | 329 | 18.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::DefaultUVS, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::DefaultUVS, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 6.98k | { | 323 | 6.98k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 6.18k | { | 325 | 6.18k | * const_cast<Type *> (obj) = v; | 326 | 6.18k | return true; | 327 | 6.18k | } | 328 | 800 | return false; | 329 | 6.98k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::NonDefaultUVS, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::NonDefaultUVS, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 8.68k | { | 323 | 8.68k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 7.86k | { | 325 | 7.86k | * const_cast<Type *> (obj) = v; | 326 | 7.86k | return true; | 327 | 7.86k | } | 328 | 823 | return false; | 329 | 8.68k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::CmapSubtable, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::CmapSubtable, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 130k | { | 323 | 130k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 95.5k | { | 325 | 95.5k | * const_cast<Type *> (obj) = v; | 326 | 95.5k | return true; | 327 | 95.5k | } | 328 | 34.7k | return false; | 329 | 130k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 53.5k | { | 323 | 53.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 45.8k | { | 325 | 45.8k | * const_cast<Type *> (obj) = v; | 326 | 45.8k | return true; | 327 | 45.8k | } | 328 | 7.73k | return false; | 329 | 53.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 19.2k | { | 323 | 19.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 17.5k | { | 325 | 17.5k | * const_cast<Type *> (obj) = v; | 326 | 17.5k | return true; | 327 | 17.5k | } | 328 | 1.65k | return false; | 329 | 19.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 31.5k | { | 323 | 31.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 30.5k | { | 325 | 30.5k | * const_cast<Type *> (obj) = v; | 326 | 30.5k | return true; | 327 | 30.5k | } | 328 | 1.03k | return false; | 329 | 31.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 4.79k | { | 323 | 4.79k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 4.65k | { | 325 | 4.65k | * const_cast<Type *> (obj) = v; | 326 | 4.65k | return true; | 327 | 4.65k | } | 328 | 141 | return false; | 329 | 4.79k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 163k | { | 323 | 163k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 105k | { | 325 | 105k | * const_cast<Type *> (obj) = v; | 326 | 105k | return true; | 327 | 105k | } | 328 | 58.4k | return false; | 329 | 163k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ClipBox, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::ClipBox, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 16.5k | { | 323 | 16.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 16.1k | { | 325 | 16.1k | * const_cast<Type *> (obj) = v; | 326 | 16.1k | return true; | 327 | 16.1k | } | 328 | 444 | return false; | 329 | 16.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::Paint, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 359k | { | 323 | 359k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 325k | { | 325 | 325k | * const_cast<Type *> (obj) = v; | 326 | 325k | return true; | 327 | 325k | } | 328 | 33.6k | return false; | 329 | 359k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::BaseGlyphList, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::BaseGlyphList, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 21.5k | { | 323 | 21.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.48k | { | 325 | 1.48k | * const_cast<Type *> (obj) = v; | 326 | 1.48k | return true; | 327 | 1.48k | } | 328 | 20.0k | return false; | 329 | 21.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::LayerList, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::LayerList, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 26.2k | { | 323 | 26.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 10.3k | { | 325 | 10.3k | * const_cast<Type *> (obj) = v; | 326 | 10.3k | return true; | 327 | 10.3k | } | 328 | 15.8k | return false; | 329 | 26.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ClipList, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::ClipList, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 25.4k | { | 323 | 25.4k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 24.7k | { | 325 | 24.7k | * const_cast<Type *> (obj) = v; | 326 | 24.7k | return true; | 327 | 24.7k | } | 328 | 713 | return false; | 329 | 25.4k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::DeltaSetIndexMap, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::DeltaSetIndexMap, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 15.0k | { | 323 | 15.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 12.6k | { | 325 | 12.6k | * const_cast<Type *> (obj) = v; | 326 | 12.6k | return true; | 327 | 12.6k | } | 328 | 2.34k | return false; | 329 | 15.0k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<short, 2u>, 14u> >, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::IntType<short, 2u>, 14u> >, OT::IntType<unsigned int, 4u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 10.9k | { | 323 | 10.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 10.0k | { | 325 | 10.0k | * const_cast<Type *> (obj) = v; | 326 | 10.0k | return true; | 327 | 10.0k | } | 328 | 816 | return false; | 329 | 10.9k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ArrayOf<OT::IntType<unsigned char, 1u>, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 3u>, false>, int>(OT::OffsetTo<OT::ArrayOf<OT::IntType<unsigned char, 1u>, OT::IntType<unsigned int, 4u> >, OT::IntType<unsigned int, 3u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::ResourceMap, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::ResourceMap, OT::IntType<unsigned int, 4u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::IndexSubtable, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::IndexSubtable, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 8.44k | { | 323 | 8.44k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 7.07k | { | 325 | 7.07k | * const_cast<Type *> (obj) = v; | 326 | 7.07k | return true; | 327 | 7.07k | } | 328 | 1.37k | return false; | 329 | 8.44k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true>, int>(OT::OffsetTo<OT::SBIXStrike, OT::IntType<unsigned int, 4u>, true> const*, int const&) Line | Count | Source | 322 | 9.62k | { | 323 | 9.62k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 8.68k | { | 325 | 8.68k | * const_cast<Type *> (obj) = v; | 326 | 8.68k | return true; | 327 | 8.68k | } | 328 | 942 | return false; | 329 | 9.62k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::IndexSubtableArray, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::IndexSubtableArray, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<AAT::ClassTable<OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 155k | { | 323 | 155k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 142k | { | 325 | 142k | * const_cast<Type *> (obj) = v; | 326 | 142k | return true; | 327 | 142k | } | 328 | 13.0k | return false; | 329 | 155k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 113k | { | 323 | 113k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 109k | { | 325 | 109k | * const_cast<Type *> (obj) = v; | 326 | 109k | return true; | 327 | 109k | } | 328 | 3.76k | return false; | 329 | 113k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 56.3k | { | 323 | 56.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 52.2k | { | 325 | 52.2k | * const_cast<Type *> (obj) = v; | 326 | 52.2k | return true; | 327 | 52.2k | } | 328 | 4.13k | return false; | 329 | 56.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 26.9k | { | 323 | 26.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 25.8k | { | 325 | 25.8k | * const_cast<Type *> (obj) = v; | 326 | 25.8k | return true; | 327 | 25.8k | } | 328 | 1.16k | return false; | 329 | 26.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 113k | { | 323 | 113k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 102k | { | 325 | 102k | * const_cast<Type *> (obj) = v; | 326 | 102k | return true; | 327 | 102k | } | 328 | 10.5k | return false; | 329 | 113k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 26.4k | { | 323 | 26.4k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 14.3k | { | 325 | 14.3k | * const_cast<Type *> (obj) = v; | 326 | 14.3k | return true; | 327 | 14.3k | } | 328 | 12.1k | return false; | 329 | 26.4k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 44.3k | { | 323 | 44.3k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 42.2k | { | 325 | 42.2k | * const_cast<Type *> (obj) = v; | 326 | 42.2k | return true; | 327 | 42.2k | } | 328 | 2.10k | return false; | 329 | 44.3k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 33.5k | { | 323 | 33.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 29.8k | { | 325 | 29.8k | * const_cast<Type *> (obj) = v; | 326 | 29.8k | return true; | 327 | 29.8k | } | 328 | 3.74k | return false; | 329 | 33.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 786k | { | 323 | 786k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 682k | { | 325 | 682k | * const_cast<Type *> (obj) = v; | 326 | 682k | return true; | 327 | 682k | } | 328 | 104k | return false; | 329 | 786k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 386k | { | 323 | 386k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 262k | { | 325 | 262k | * const_cast<Type *> (obj) = v; | 326 | 262k | return true; | 327 | 262k | } | 328 | 123k | return false; | 329 | 386k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 132k | { | 323 | 132k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 7.56k | { | 325 | 7.56k | * const_cast<Type *> (obj) = v; | 326 | 7.56k | return true; | 327 | 7.56k | } | 328 | 124k | return false; | 329 | 132k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 11.4k | { | 323 | 11.4k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 11.0k | { | 325 | 11.0k | * const_cast<Type *> (obj) = v; | 326 | 11.0k | return true; | 327 | 11.0k | } | 328 | 465 | return false; | 329 | 11.4k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true>, int>(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::IntType<unsigned int, 3u> >, OT::IntType<unsigned int, 3u>, true> const*, int const&) Line | Count | Source | 322 | 1.91k | { | 323 | 1.91k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.37k | { | 325 | 1.37k | * const_cast<Type *> (obj) = v; | 326 | 1.37k | return true; | 327 | 1.37k | } | 328 | 544 | return false; | 329 | 1.91k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::IntType<unsigned int, 4u>, false> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::AxisValue, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::AxisValueOffsetArray, OT::IntType<unsigned int, 4u>, false>, int>(OT::OffsetTo<OT::AxisValueOffsetArray, OT::IntType<unsigned int, 4u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::BaseCoord, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 52.5k | { | 323 | 52.5k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 49.3k | { | 325 | 49.3k | * const_cast<Type *> (obj) = v; | 326 | 49.3k | return true; | 327 | 49.3k | } | 328 | 3.17k | return false; | 329 | 52.5k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::BaseValues, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::BaseValues, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 6.69k | { | 323 | 6.69k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 3.83k | { | 325 | 3.83k | * const_cast<Type *> (obj) = v; | 326 | 3.83k | return true; | 327 | 3.83k | } | 328 | 2.86k | return false; | 329 | 6.69k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MinMax, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MinMax, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 13.1k | { | 323 | 13.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 11.0k | { | 325 | 11.0k | * const_cast<Type *> (obj) = v; | 326 | 11.0k | return true; | 327 | 11.0k | } | 328 | 2.07k | return false; | 329 | 13.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::BaseScript, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::BaseScript, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 20.0k | { | 323 | 20.0k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 14.1k | { | 325 | 14.1k | * const_cast<Type *> (obj) = v; | 326 | 14.1k | return true; | 327 | 14.1k | } | 328 | 5.89k | return false; | 329 | 20.0k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::Axis, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::Axis, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 9.25k | { | 323 | 9.25k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 2.17k | { | 325 | 2.17k | * const_cast<Type *> (obj) = v; | 326 | 2.17k | return true; | 327 | 2.17k | } | 328 | 7.07k | return false; | 329 | 9.25k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::IndexArray, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::IndexArray, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::JstfPriority, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::IntType<unsigned short, 2u> >, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::JstfLangSys, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::JstfLangSys, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::JstfScript, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::JstfScript, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> const*, int const&) Unexecuted instantiation: bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false>, int>(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::IntType<unsigned short, 2u>, true> >, OT::IntType<unsigned short, 2u>, false> const*, int const&) bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathConstants, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathConstants, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 2.91k | { | 323 | 2.91k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 204 | { | 325 | 204 | * const_cast<Type *> (obj) = v; | 326 | 204 | return true; | 327 | 204 | } | 328 | 2.70k | return false; | 329 | 2.91k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 2.16k | { | 323 | 2.16k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.28k | { | 325 | 1.28k | * const_cast<Type *> (obj) = v; | 326 | 1.28k | return true; | 327 | 1.28k | } | 328 | 887 | return false; | 329 | 2.16k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathTopAccentAttachment, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathTopAccentAttachment, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 1.84k | { | 323 | 1.84k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.22k | { | 325 | 1.22k | * const_cast<Type *> (obj) = v; | 326 | 1.22k | return true; | 327 | 1.22k | } | 328 | 620 | return false; | 329 | 1.84k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathKern, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathKern, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 12.1k | { | 323 | 12.1k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 10.3k | { | 325 | 10.3k | * const_cast<Type *> (obj) = v; | 326 | 10.3k | return true; | 327 | 10.3k | } | 328 | 1.77k | return false; | 329 | 12.1k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathKernInfo, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathKernInfo, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 3.78k | { | 323 | 3.78k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.66k | { | 325 | 1.66k | * const_cast<Type *> (obj) = v; | 326 | 1.66k | return true; | 327 | 1.66k | } | 328 | 2.11k | return false; | 329 | 3.78k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathGlyphInfo, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathGlyphInfo, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 4.73k | { | 323 | 4.73k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 936 | { | 325 | 936 | * const_cast<Type *> (obj) = v; | 326 | 936 | return true; | 327 | 936 | } | 328 | 3.80k | return false; | 329 | 4.73k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathGlyphAssembly, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathGlyphAssembly, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 15.2k | { | 323 | 15.2k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 14.2k | { | 325 | 14.2k | * const_cast<Type *> (obj) = v; | 326 | 14.2k | return true; | 327 | 14.2k | } | 328 | 1.03k | return false; | 329 | 15.2k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathGlyphConstruction, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 16.9k | { | 323 | 16.9k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 15.2k | { | 325 | 15.2k | * const_cast<Type *> (obj) = v; | 326 | 15.2k | return true; | 327 | 15.2k | } | 328 | 1.76k | return false; | 329 | 16.9k | } |
bool hb_sanitize_context_t::try_set<OT::OffsetTo<OT::MathVariants, OT::IntType<unsigned short, 2u>, true>, int>(OT::OffsetTo<OT::MathVariants, OT::IntType<unsigned short, 2u>, true> const*, int const&) Line | Count | Source | 322 | 3.89k | { | 323 | 3.89k | if (this->may_edit (obj, hb_static_size (Type))) | 324 | 1.84k | { | 325 | 1.84k | * const_cast<Type *> (obj) = v; | 326 | 1.84k | return true; | 327 | 1.84k | } | 328 | 2.04k | return false; | 329 | 3.89k | } |
|
330 | | |
331 | | template <typename Type> |
332 | | hb_blob_t *sanitize_blob (hb_blob_t *blob) |
333 | 18.7M | { |
334 | 18.7M | bool sane; |
335 | | |
336 | 18.7M | init (blob); |
337 | | |
338 | 19.0M | retry: |
339 | 19.0M | DEBUG_MSG_FUNC (SANITIZE, start, "start"); |
340 | | |
341 | 19.0M | start_processing (); |
342 | | |
343 | 19.0M | if (unlikely (!start)) |
344 | 15.3M | { |
345 | 15.3M | end_processing (); |
346 | 15.3M | return blob; |
347 | 15.3M | } |
348 | | |
349 | 3.69M | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); |
350 | | |
351 | 3.69M | sane = t->sanitize (this); |
352 | 3.69M | if (sane) |
353 | 2.72M | { |
354 | 2.72M | if (edit_count) |
355 | 293k | { |
356 | 293k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); |
357 | | |
358 | | /* sanitize again to ensure no toe-stepping */ |
359 | 293k | edit_count = 0; |
360 | 293k | sane = t->sanitize (this); |
361 | 293k | if (edit_count) { |
362 | 7.01k | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); |
363 | 7.01k | sane = false; |
364 | 7.01k | } |
365 | 293k | } |
366 | 2.72M | } |
367 | 968k | else |
368 | 968k | { |
369 | 968k | if (edit_count && !writable) { |
370 | 368k | start = hb_blob_get_data_writable (blob, nullptr); |
371 | 368k | end = start + blob->length; |
372 | | |
373 | 368k | if (start) |
374 | 365k | { |
375 | 365k | writable = true; |
376 | | /* ok, we made it writable by relocating. try again */ |
377 | 365k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); |
378 | 365k | goto retry; |
379 | 365k | } |
380 | 368k | } |
381 | 968k | } |
382 | | |
383 | 3.32M | end_processing (); |
384 | | |
385 | 3.32M | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); |
386 | 3.32M | if (sane) |
387 | 2.71M | { |
388 | 2.71M | hb_blob_make_immutable (blob); |
389 | 2.71M | return blob; |
390 | 2.71M | } |
391 | 616k | else |
392 | 616k | { |
393 | 616k | hb_blob_destroy (blob); |
394 | 616k | return hb_blob_get_empty (); |
395 | 616k | } |
396 | 3.32M | } hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 495k | retry: | 339 | 495k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 495k | start_processing (); | 342 | | | 343 | 495k | if (unlikely (!start)) | 344 | 362k | { | 345 | 362k | end_processing (); | 346 | 362k | return blob; | 347 | 362k | } | 348 | | | 349 | 133k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 133k | sane = t->sanitize (this); | 352 | 133k | if (sane) | 353 | 102k | { | 354 | 102k | if (edit_count) | 355 | 23.2k | { | 356 | 23.2k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 23.2k | edit_count = 0; | 360 | 23.2k | sane = t->sanitize (this); | 361 | 23.2k | if (edit_count) { | 362 | 68 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 68 | sane = false; | 364 | 68 | } | 365 | 23.2k | } | 366 | 102k | } | 367 | 30.3k | else | 368 | 30.3k | { | 369 | 30.3k | if (edit_count && !writable) { | 370 | 26.3k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 26.3k | end = start + blob->length; | 372 | | | 373 | 26.3k | if (start) | 374 | 26.1k | { | 375 | 26.1k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 26.1k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 26.1k | goto retry; | 379 | 26.1k | } | 380 | 26.3k | } | 381 | 30.3k | } | 382 | | | 383 | 106k | end_processing (); | 384 | | | 385 | 106k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 106k | if (sane) | 387 | 102k | { | 388 | 102k | hb_blob_make_immutable (blob); | 389 | 102k | return blob; | 390 | 102k | } | 391 | 4.34k | else | 392 | 4.34k | { | 393 | 4.34k | hb_blob_destroy (blob); | 394 | 4.34k | return hb_blob_get_empty (); | 395 | 4.34k | } | 396 | 106k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::morx>(hb_blob_t*) Line | Count | Source | 333 | 472k | { | 334 | 472k | bool sane; | 335 | | | 336 | 472k | init (blob); | 337 | | | 338 | 472k | retry: | 339 | 472k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 472k | start_processing (); | 342 | | | 343 | 472k | if (unlikely (!start)) | 344 | 444k | { | 345 | 444k | end_processing (); | 346 | 444k | return blob; | 347 | 444k | } | 348 | | | 349 | 27.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 27.7k | sane = t->sanitize (this); | 352 | 27.7k | if (sane) | 353 | 19.7k | { | 354 | 19.7k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 19.7k | } | 367 | 7.98k | else | 368 | 7.98k | { | 369 | 7.98k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 7.98k | } | 382 | | | 383 | 27.7k | end_processing (); | 384 | | | 385 | 27.7k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 27.7k | if (sane) | 387 | 19.7k | { | 388 | 19.7k | hb_blob_make_immutable (blob); | 389 | 19.7k | return blob; | 390 | 19.7k | } | 391 | 7.98k | else | 392 | 7.98k | { | 393 | 7.98k | hb_blob_destroy (blob); | 394 | 7.98k | return hb_blob_get_empty (); | 395 | 7.98k | } | 396 | 27.7k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ltag>(hb_blob_t*) Line | Count | Source | 333 | 3.85k | { | 334 | 3.85k | bool sane; | 335 | | | 336 | 3.85k | init (blob); | 337 | | | 338 | 3.85k | retry: | 339 | 3.85k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 3.85k | start_processing (); | 342 | | | 343 | 3.85k | if (unlikely (!start)) | 344 | 3.85k | { | 345 | 3.85k | end_processing (); | 346 | 3.85k | return blob; | 347 | 3.85k | } | 348 | | | 349 | 0 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | |
| 351 | 0 | sane = t->sanitize (this); | 352 | 0 | if (sane) | 353 | 0 | { | 354 | 0 | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 0 | } | 367 | 0 | else | 368 | 0 | { | 369 | 0 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 0 | } | 382 | | | 383 | 0 | end_processing (); | 384 | |
| 385 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 0 | if (sane) | 387 | 0 | { | 388 | 0 | hb_blob_make_immutable (blob); | 389 | 0 | return blob; | 390 | 0 | } | 391 | 0 | else | 392 | 0 | { | 393 | 0 | hb_blob_destroy (blob); | 394 | 0 | return hb_blob_get_empty (); | 395 | 0 | } | 396 | 0 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::mort>(hb_blob_t*) Line | Count | Source | 333 | 452k | { | 334 | 452k | bool sane; | 335 | | | 336 | 452k | init (blob); | 337 | | | 338 | 452k | retry: | 339 | 452k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 452k | start_processing (); | 342 | | | 343 | 452k | if (unlikely (!start)) | 344 | 431k | { | 345 | 431k | end_processing (); | 346 | 431k | return blob; | 347 | 431k | } | 348 | | | 349 | 20.9k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 20.9k | sane = t->sanitize (this); | 352 | 20.9k | if (sane) | 353 | 17.8k | { | 354 | 17.8k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 17.8k | } | 367 | 3.08k | else | 368 | 3.08k | { | 369 | 3.08k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 3.08k | } | 382 | | | 383 | 20.9k | end_processing (); | 384 | | | 385 | 20.9k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 20.9k | if (sane) | 387 | 17.8k | { | 388 | 17.8k | hb_blob_make_immutable (blob); | 389 | 17.8k | return blob; | 390 | 17.8k | } | 391 | 3.08k | else | 392 | 3.08k | { | 393 | 3.08k | hb_blob_destroy (blob); | 394 | 3.08k | return hb_blob_get_empty (); | 395 | 3.08k | } | 396 | 20.9k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::kerx>(hb_blob_t*) Line | Count | Source | 333 | 472k | { | 334 | 472k | bool sane; | 335 | | | 336 | 472k | init (blob); | 337 | | | 338 | 472k | retry: | 339 | 472k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 472k | start_processing (); | 342 | | | 343 | 472k | if (unlikely (!start)) | 344 | 455k | { | 345 | 455k | end_processing (); | 346 | 455k | return blob; | 347 | 455k | } | 348 | | | 349 | 16.3k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 16.3k | sane = t->sanitize (this); | 352 | 16.3k | if (sane) | 353 | 12.1k | { | 354 | 12.1k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 12.1k | } | 367 | 4.20k | else | 368 | 4.20k | { | 369 | 4.20k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 4.20k | } | 382 | | | 383 | 16.3k | end_processing (); | 384 | | | 385 | 16.3k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 16.3k | if (sane) | 387 | 12.1k | { | 388 | 12.1k | hb_blob_make_immutable (blob); | 389 | 12.1k | return blob; | 390 | 12.1k | } | 391 | 4.20k | else | 392 | 4.20k | { | 393 | 4.20k | hb_blob_destroy (blob); | 394 | 4.20k | return hb_blob_get_empty (); | 395 | 4.20k | } | 396 | 16.3k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ankr>(hb_blob_t*) Line | Count | Source | 333 | 12.1k | { | 334 | 12.1k | bool sane; | 335 | | | 336 | 12.1k | init (blob); | 337 | | | 338 | 14.3k | retry: | 339 | 14.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 14.3k | start_processing (); | 342 | | | 343 | 14.3k | if (unlikely (!start)) | 344 | 6.45k | { | 345 | 6.45k | end_processing (); | 346 | 6.45k | return blob; | 347 | 6.45k | } | 348 | | | 349 | 7.87k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 7.87k | sane = t->sanitize (this); | 352 | 7.87k | if (sane) | 353 | 3.80k | { | 354 | 3.80k | if (edit_count) | 355 | 2.20k | { | 356 | 2.20k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 2.20k | edit_count = 0; | 360 | 2.20k | sane = t->sanitize (this); | 361 | 2.20k | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 2.20k | } | 366 | 3.80k | } | 367 | 4.07k | else | 368 | 4.07k | { | 369 | 4.07k | if (edit_count && !writable) { | 370 | 2.68k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 2.68k | end = start + blob->length; | 372 | | | 373 | 2.68k | if (start) | 374 | 2.20k | { | 375 | 2.20k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 2.20k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 2.20k | goto retry; | 379 | 2.20k | } | 380 | 2.68k | } | 381 | 4.07k | } | 382 | | | 383 | 5.66k | end_processing (); | 384 | | | 385 | 5.66k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 5.66k | if (sane) | 387 | 3.78k | { | 388 | 3.78k | hb_blob_make_immutable (blob); | 389 | 3.78k | return blob; | 390 | 3.78k | } | 391 | 1.88k | else | 392 | 1.88k | { | 393 | 1.88k | hb_blob_destroy (blob); | 394 | 1.88k | return hb_blob_get_empty (); | 395 | 1.88k | } | 396 | 5.66k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::trak>(hb_blob_t*) Line | Count | Source | 333 | 465k | { | 334 | 465k | bool sane; | 335 | | | 336 | 465k | init (blob); | 337 | | | 338 | 466k | retry: | 339 | 466k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 466k | start_processing (); | 342 | | | 343 | 466k | if (unlikely (!start)) | 344 | 463k | { | 345 | 463k | end_processing (); | 346 | 463k | return blob; | 347 | 463k | } | 348 | | | 349 | 2.81k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 2.81k | sane = t->sanitize (this); | 352 | 2.81k | if (sane) | 353 | 1.28k | { | 354 | 1.28k | if (edit_count) | 355 | 747 | { | 356 | 747 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 747 | edit_count = 0; | 360 | 747 | sane = t->sanitize (this); | 361 | 747 | if (edit_count) { | 362 | 24 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 24 | sane = false; | 364 | 24 | } | 365 | 747 | } | 366 | 1.28k | } | 367 | 1.53k | else | 368 | 1.53k | { | 369 | 1.53k | if (edit_count && !writable) { | 370 | 820 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 820 | end = start + blob->length; | 372 | | | 373 | 820 | if (start) | 374 | 765 | { | 375 | 765 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 765 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 765 | goto retry; | 379 | 765 | } | 380 | 820 | } | 381 | 1.53k | } | 382 | | | 383 | 2.05k | end_processing (); | 384 | | | 385 | 2.05k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 2.05k | if (sane) | 387 | 1.25k | { | 388 | 1.25k | hb_blob_make_immutable (blob); | 389 | 1.25k | return blob; | 390 | 1.25k | } | 391 | 801 | else | 392 | 801 | { | 393 | 801 | hb_blob_destroy (blob); | 394 | 801 | return hb_blob_get_empty (); | 395 | 801 | } | 396 | 2.05k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::feat>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 473k | { | 345 | 473k | end_processing (); | 346 | 473k | return blob; | 347 | 473k | } | 348 | | | 349 | 724 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 724 | sane = t->sanitize (this); | 352 | 724 | if (sane) | 353 | 266 | { | 354 | 266 | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 266 | } | 367 | 458 | else | 368 | 458 | { | 369 | 458 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 458 | } | 382 | | | 383 | 724 | end_processing (); | 384 | | | 385 | 724 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 724 | if (sane) | 387 | 266 | { | 388 | 266 | hb_blob_make_immutable (blob); | 389 | 266 | return blob; | 390 | 266 | } | 391 | 458 | else | 392 | 458 | { | 393 | 458 | hb_blob_destroy (blob); | 394 | 458 | return hb_blob_get_empty (); | 395 | 458 | } | 396 | 724 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 568k | retry: | 339 | 568k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 568k | start_processing (); | 342 | | | 343 | 568k | if (unlikely (!start)) | 344 | 298k | { | 345 | 298k | end_processing (); | 346 | 298k | return blob; | 347 | 298k | } | 348 | | | 349 | 270k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 270k | sane = t->sanitize (this); | 352 | 270k | if (sane) | 353 | 145k | { | 354 | 145k | if (edit_count) | 355 | 73.5k | { | 356 | 73.5k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 73.5k | edit_count = 0; | 360 | 73.5k | sane = t->sanitize (this); | 361 | 73.5k | if (edit_count) { | 362 | 2.92k | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 2.92k | sane = false; | 364 | 2.92k | } | 365 | 73.5k | } | 366 | 145k | } | 367 | 124k | else | 368 | 124k | { | 369 | 124k | if (edit_count && !writable) { | 370 | 99.1k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 99.1k | end = start + blob->length; | 372 | | | 373 | 99.1k | if (start) | 374 | 98.5k | { | 375 | 98.5k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 98.5k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 98.5k | goto retry; | 379 | 98.5k | } | 380 | 99.1k | } | 381 | 124k | } | 382 | | | 383 | 171k | end_processing (); | 384 | | | 385 | 171k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 171k | if (sane) | 387 | 139k | { | 388 | 139k | hb_blob_make_immutable (blob); | 389 | 139k | return blob; | 390 | 139k | } | 391 | 32.3k | else | 392 | 32.3k | { | 393 | 32.3k | hb_blob_destroy (blob); | 394 | 32.3k | return hb_blob_get_empty (); | 395 | 32.3k | } | 396 | 171k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::loca>(hb_blob_t*) Line | Count | Source | 333 | 470k | { | 334 | 470k | bool sane; | 335 | | | 336 | 470k | init (blob); | 337 | | | 338 | 470k | retry: | 339 | 470k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 470k | start_processing (); | 342 | | | 343 | 470k | if (unlikely (!start)) | 344 | 354k | { | 345 | 354k | end_processing (); | 346 | 354k | return blob; | 347 | 354k | } | 348 | | | 349 | 115k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 115k | sane = t->sanitize (this); | 352 | 115k | if (sane) | 353 | 115k | { | 354 | 115k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 115k | } | 367 | 0 | else | 368 | 0 | { | 369 | 0 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 0 | } | 382 | | | 383 | 115k | end_processing (); | 384 | | | 385 | 115k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 115k | if (sane) | 387 | 115k | { | 388 | 115k | hb_blob_make_immutable (blob); | 389 | 115k | return blob; | 390 | 115k | } | 391 | 0 | else | 392 | 0 | { | 393 | 0 | hb_blob_destroy (blob); | 394 | 0 | return hb_blob_get_empty (); | 395 | 0 | } | 396 | 115k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 229k | { | 345 | 229k | end_processing (); | 346 | 229k | return blob; | 347 | 229k | } | 348 | | | 349 | 245k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 245k | sane = t->sanitize (this); | 352 | 245k | if (sane) | 353 | 207k | { | 354 | 207k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 207k | } | 367 | 37.9k | else | 368 | 37.9k | { | 369 | 37.9k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 37.9k | } | 382 | | | 383 | 245k | end_processing (); | 384 | | | 385 | 245k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 245k | if (sane) | 387 | 207k | { | 388 | 207k | hb_blob_make_immutable (blob); | 389 | 207k | return blob; | 390 | 207k | } | 391 | 37.9k | else | 392 | 37.9k | { | 393 | 37.9k | hb_blob_destroy (blob); | 394 | 37.9k | return hb_blob_get_empty (); | 395 | 37.9k | } | 396 | 245k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 258k | { | 345 | 258k | end_processing (); | 346 | 258k | return blob; | 347 | 258k | } | 348 | | | 349 | 215k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 215k | sane = t->sanitize (this); | 352 | 215k | if (sane) | 353 | 157k | { | 354 | 157k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 157k | } | 367 | 57.9k | else | 368 | 57.9k | { | 369 | 57.9k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 57.9k | } | 382 | | | 383 | 215k | end_processing (); | 384 | | | 385 | 215k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 215k | if (sane) | 387 | 157k | { | 388 | 157k | hb_blob_make_immutable (blob); | 389 | 157k | return blob; | 390 | 157k | } | 391 | 57.9k | else | 392 | 57.9k | { | 393 | 57.9k | hb_blob_destroy (blob); | 394 | 57.9k | return hb_blob_get_empty (); | 395 | 57.9k | } | 396 | 215k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 478k | retry: | 339 | 478k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 478k | start_processing (); | 342 | | | 343 | 478k | if (unlikely (!start)) | 344 | 443k | { | 345 | 443k | end_processing (); | 346 | 443k | return blob; | 347 | 443k | } | 348 | | | 349 | 35.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 35.7k | sane = t->sanitize (this); | 352 | 35.7k | if (sane) | 353 | 20.7k | { | 354 | 20.7k | if (edit_count) | 355 | 4.60k | { | 356 | 4.60k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 4.60k | edit_count = 0; | 360 | 4.60k | sane = t->sanitize (this); | 361 | 4.60k | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 4.60k | } | 366 | 20.7k | } | 367 | 15.0k | else | 368 | 15.0k | { | 369 | 15.0k | if (edit_count && !writable) { | 370 | 5.10k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 5.10k | end = start + blob->length; | 372 | | | 373 | 5.10k | if (start) | 374 | 4.95k | { | 375 | 4.95k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 4.95k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 4.95k | goto retry; | 379 | 4.95k | } | 380 | 5.10k | } | 381 | 15.0k | } | 382 | | | 383 | 30.8k | end_processing (); | 384 | | | 385 | 30.8k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 30.8k | if (sane) | 387 | 20.7k | { | 388 | 20.7k | hb_blob_make_immutable (blob); | 389 | 20.7k | return blob; | 390 | 20.7k | } | 391 | 10.1k | else | 392 | 10.1k | { | 393 | 10.1k | hb_blob_destroy (blob); | 394 | 10.1k | return hb_blob_get_empty (); | 395 | 10.1k | } | 396 | 30.8k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 503k | retry: | 339 | 503k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 503k | start_processing (); | 342 | | | 343 | 503k | if (unlikely (!start)) | 344 | 247k | { | 345 | 247k | end_processing (); | 346 | 247k | return blob; | 347 | 247k | } | 348 | | | 349 | 255k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 255k | sane = t->sanitize (this); | 352 | 255k | if (sane) | 353 | 172k | { | 354 | 172k | if (edit_count) | 355 | 32.1k | { | 356 | 32.1k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 32.1k | edit_count = 0; | 360 | 32.1k | sane = t->sanitize (this); | 361 | 32.1k | if (edit_count) { | 362 | 159 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 159 | sane = false; | 364 | 159 | } | 365 | 32.1k | } | 366 | 172k | } | 367 | 82.1k | else | 368 | 82.1k | { | 369 | 82.1k | if (edit_count && !writable) { | 370 | 33.5k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 33.5k | end = start + blob->length; | 372 | | | 373 | 33.5k | if (start) | 374 | 33.3k | { | 375 | 33.3k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 33.3k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 33.3k | goto retry; | 379 | 33.3k | } | 380 | 33.5k | } | 381 | 82.1k | } | 382 | | | 383 | 221k | end_processing (); | 384 | | | 385 | 221k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 221k | if (sane) | 387 | 172k | { | 388 | 172k | hb_blob_make_immutable (blob); | 389 | 172k | return blob; | 390 | 172k | } | 391 | 48.9k | else | 392 | 48.9k | { | 393 | 48.9k | hb_blob_destroy (blob); | 394 | 48.9k | return hb_blob_get_empty (); | 395 | 48.9k | } | 396 | 221k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 277k | { | 345 | 277k | end_processing (); | 346 | 277k | return blob; | 347 | 277k | } | 348 | | | 349 | 196k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 196k | sane = t->sanitize (this); | 352 | 196k | if (sane) | 353 | 173k | { | 354 | 173k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 173k | } | 367 | 23.1k | else | 368 | 23.1k | { | 369 | 23.1k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 23.1k | } | 382 | | | 383 | 196k | end_processing (); | 384 | | | 385 | 196k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 196k | if (sane) | 387 | 173k | { | 388 | 173k | hb_blob_make_immutable (blob); | 389 | 173k | return blob; | 390 | 173k | } | 391 | 23.1k | else | 392 | 23.1k | { | 393 | 23.1k | hb_blob_destroy (blob); | 394 | 23.1k | return hb_blob_get_empty (); | 395 | 23.1k | } | 396 | 196k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 507k | retry: | 339 | 507k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 507k | start_processing (); | 342 | | | 343 | 507k | if (unlikely (!start)) | 344 | 434k | { | 345 | 434k | end_processing (); | 346 | 434k | return blob; | 347 | 434k | } | 348 | | | 349 | 72.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 72.7k | sane = t->sanitize (this); | 352 | 72.7k | if (sane) | 353 | 30.7k | { | 354 | 30.7k | if (edit_count) | 355 | 28.3k | { | 356 | 28.3k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 28.3k | edit_count = 0; | 360 | 28.3k | sane = t->sanitize (this); | 361 | 28.3k | if (edit_count) { | 362 | 85 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 85 | sane = false; | 364 | 85 | } | 365 | 28.3k | } | 366 | 30.7k | } | 367 | 42.0k | else | 368 | 42.0k | { | 369 | 42.0k | if (edit_count && !writable) { | 370 | 33.1k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 33.1k | end = start + blob->length; | 372 | | | 373 | 33.1k | if (start) | 374 | 33.0k | { | 375 | 33.0k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 33.0k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 33.0k | goto retry; | 379 | 33.0k | } | 380 | 33.1k | } | 381 | 42.0k | } | 382 | | | 383 | 39.7k | end_processing (); | 384 | | | 385 | 39.7k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 39.7k | if (sane) | 387 | 30.6k | { | 388 | 30.6k | hb_blob_make_immutable (blob); | 389 | 30.6k | return blob; | 390 | 30.6k | } | 391 | 9.06k | else | 392 | 9.06k | { | 393 | 9.06k | hb_blob_destroy (blob); | 394 | 9.06k | return hb_blob_get_empty (); | 395 | 9.06k | } | 396 | 39.7k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_blob_t*) Line | Count | Source | 333 | 467k | { | 334 | 467k | bool sane; | 335 | | | 336 | 467k | init (blob); | 337 | | | 338 | 467k | retry: | 339 | 467k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 467k | start_processing (); | 342 | | | 343 | 467k | if (unlikely (!start)) | 344 | 293k | { | 345 | 293k | end_processing (); | 346 | 293k | return blob; | 347 | 293k | } | 348 | | | 349 | 174k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 174k | sane = t->sanitize (this); | 352 | 174k | if (sane) | 353 | 174k | { | 354 | 174k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 174k | } | 367 | 0 | else | 368 | 0 | { | 369 | 0 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 0 | } | 382 | | | 383 | 174k | end_processing (); | 384 | | | 385 | 174k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 174k | if (sane) | 387 | 174k | { | 388 | 174k | hb_blob_make_immutable (blob); | 389 | 174k | return blob; | 390 | 174k | } | 391 | 0 | else | 392 | 0 | { | 393 | 0 | hb_blob_destroy (blob); | 394 | 0 | return hb_blob_get_empty (); | 395 | 0 | } | 396 | 174k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR>(hb_blob_t*) Line | Count | Source | 333 | 467k | { | 334 | 467k | bool sane; | 335 | | | 336 | 467k | init (blob); | 337 | | | 338 | 472k | retry: | 339 | 472k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 472k | start_processing (); | 342 | | | 343 | 472k | if (unlikely (!start)) | 344 | 437k | { | 345 | 437k | end_processing (); | 346 | 437k | return blob; | 347 | 437k | } | 348 | | | 349 | 34.6k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 34.6k | sane = t->sanitize (this); | 352 | 34.6k | if (sane) | 353 | 15.1k | { | 354 | 15.1k | if (edit_count) | 355 | 4.69k | { | 356 | 4.69k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 4.69k | edit_count = 0; | 360 | 4.69k | sane = t->sanitize (this); | 361 | 4.69k | if (edit_count) { | 362 | 106 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 106 | sane = false; | 364 | 106 | } | 365 | 4.69k | } | 366 | 15.1k | } | 367 | 19.5k | else | 368 | 19.5k | { | 369 | 19.5k | if (edit_count && !writable) { | 370 | 5.00k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 5.00k | end = start + blob->length; | 372 | | | 373 | 5.00k | if (start) | 374 | 4.93k | { | 375 | 4.93k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 4.93k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 4.93k | goto retry; | 379 | 4.93k | } | 380 | 5.00k | } | 381 | 19.5k | } | 382 | | | 383 | 29.6k | end_processing (); | 384 | | | 385 | 29.6k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 29.6k | if (sane) | 387 | 14.9k | { | 388 | 14.9k | hb_blob_make_immutable (blob); | 389 | 14.9k | return blob; | 390 | 14.9k | } | 391 | 14.7k | else | 392 | 14.7k | { | 393 | 14.7k | hb_blob_destroy (blob); | 394 | 14.7k | return hb_blob_get_empty (); | 395 | 14.7k | } | 396 | 29.6k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hhea>(hb_blob_t*) Line | Count | Source | 333 | 473k | { | 334 | 473k | bool sane; | 335 | | | 336 | 473k | init (blob); | 337 | | | 338 | 473k | retry: | 339 | 473k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 473k | start_processing (); | 342 | | | 343 | 473k | if (unlikely (!start)) | 344 | 263k | { | 345 | 263k | end_processing (); | 346 | 263k | return blob; | 347 | 263k | } | 348 | | | 349 | 210k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 210k | sane = t->sanitize (this); | 352 | 210k | if (sane) | 353 | 164k | { | 354 | 164k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 164k | } | 367 | 46.3k | else | 368 | 46.3k | { | 369 | 46.3k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 46.3k | } | 382 | | | 383 | 210k | end_processing (); | 384 | | | 385 | 210k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 210k | if (sane) | 387 | 164k | { | 388 | 164k | hb_blob_make_immutable (blob); | 389 | 164k | return blob; | 390 | 164k | } | 391 | 46.3k | else | 392 | 46.3k | { | 393 | 46.3k | hb_blob_destroy (blob); | 394 | 46.3k | return hb_blob_get_empty (); | 395 | 46.3k | } | 396 | 210k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vhea>(hb_blob_t*) Line | Count | Source | 333 | 466k | { | 334 | 466k | bool sane; | 335 | | | 336 | 466k | init (blob); | 337 | | | 338 | 466k | retry: | 339 | 466k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 466k | start_processing (); | 342 | | | 343 | 466k | if (unlikely (!start)) | 344 | 455k | { | 345 | 455k | end_processing (); | 346 | 455k | return blob; | 347 | 455k | } | 348 | | | 349 | 10.8k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 10.8k | sane = t->sanitize (this); | 352 | 10.8k | if (sane) | 353 | 3.81k | { | 354 | 3.81k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 3.81k | } | 367 | 7.03k | else | 368 | 7.03k | { | 369 | 7.03k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 7.03k | } | 382 | | | 383 | 10.8k | end_processing (); | 384 | | | 385 | 10.8k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 10.8k | if (sane) | 387 | 3.81k | { | 388 | 3.81k | hb_blob_make_immutable (blob); | 389 | 3.81k | return blob; | 390 | 3.81k | } | 391 | 7.03k | else | 392 | 7.03k | { | 393 | 7.03k | hb_blob_destroy (blob); | 394 | 7.03k | return hb_blob_get_empty (); | 395 | 7.03k | } | 396 | 10.8k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_blob_t*) Line | Count | Source | 333 | 466k | { | 334 | 466k | bool sane; | 335 | | | 336 | 466k | init (blob); | 337 | | | 338 | 466k | retry: | 339 | 466k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 466k | start_processing (); | 342 | | | 343 | 466k | if (unlikely (!start)) | 344 | 456k | { | 345 | 456k | end_processing (); | 346 | 456k | return blob; | 347 | 456k | } | 348 | | | 349 | 10.4k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 10.4k | sane = t->sanitize (this); | 352 | 10.4k | if (sane) | 353 | 10.4k | { | 354 | 10.4k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 10.4k | } | 367 | 0 | else | 368 | 0 | { | 369 | 0 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 0 | } | 382 | | | 383 | 10.4k | end_processing (); | 384 | | | 385 | 10.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 10.4k | if (sane) | 387 | 10.4k | { | 388 | 10.4k | hb_blob_make_immutable (blob); | 389 | 10.4k | return blob; | 390 | 10.4k | } | 391 | 0 | else | 392 | 0 | { | 393 | 0 | hb_blob_destroy (blob); | 394 | 0 | return hb_blob_get_empty (); | 395 | 0 | } | 396 | 10.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR>(hb_blob_t*) Line | Count | Source | 333 | 466k | { | 334 | 466k | bool sane; | 335 | | | 336 | 466k | init (blob); | 337 | | | 338 | 469k | retry: | 339 | 469k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 469k | start_processing (); | 342 | | | 343 | 469k | if (unlikely (!start)) | 344 | 458k | { | 345 | 458k | end_processing (); | 346 | 458k | return blob; | 347 | 458k | } | 348 | | | 349 | 10.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 10.7k | sane = t->sanitize (this); | 352 | 10.7k | if (sane) | 353 | 6.13k | { | 354 | 6.13k | if (edit_count) | 355 | 2.95k | { | 356 | 2.95k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 2.95k | edit_count = 0; | 360 | 2.95k | sane = t->sanitize (this); | 361 | 2.95k | if (edit_count) { | 362 | 11 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 11 | sane = false; | 364 | 11 | } | 365 | 2.95k | } | 366 | 6.13k | } | 367 | 4.58k | else | 368 | 4.58k | { | 369 | 4.58k | if (edit_count && !writable) { | 370 | 3.06k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 3.06k | end = start + blob->length; | 372 | | | 373 | 3.06k | if (start) | 374 | 3.01k | { | 375 | 3.01k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 3.01k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 3.01k | goto retry; | 379 | 3.01k | } | 380 | 3.06k | } | 381 | 4.58k | } | 382 | | | 383 | 7.70k | end_processing (); | 384 | | | 385 | 7.70k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 7.70k | if (sane) | 387 | 6.12k | { | 388 | 6.12k | hb_blob_make_immutable (blob); | 389 | 6.12k | return blob; | 390 | 6.12k | } | 391 | 1.57k | else | 392 | 1.57k | { | 393 | 1.57k | hb_blob_destroy (blob); | 394 | 1.57k | return hb_blob_get_empty (); | 395 | 1.57k | } | 396 | 7.70k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar>(hb_blob_t*) Line | Count | Source | 333 | 457k | { | 334 | 457k | bool sane; | 335 | | | 336 | 457k | init (blob); | 337 | | | 338 | 457k | retry: | 339 | 457k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 457k | start_processing (); | 342 | | | 343 | 457k | if (unlikely (!start)) | 344 | 426k | { | 345 | 426k | end_processing (); | 346 | 426k | return blob; | 347 | 426k | } | 348 | | | 349 | 30.0k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 30.0k | sane = t->sanitize (this); | 352 | 30.0k | if (sane) | 353 | 17.3k | { | 354 | 17.3k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 17.3k | } | 367 | 12.7k | else | 368 | 12.7k | { | 369 | 12.7k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 12.7k | } | 382 | | | 383 | 30.0k | end_processing (); | 384 | | | 385 | 30.0k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 30.0k | if (sane) | 387 | 17.3k | { | 388 | 17.3k | hb_blob_make_immutable (blob); | 389 | 17.3k | return blob; | 390 | 17.3k | } | 391 | 12.7k | else | 392 | 12.7k | { | 393 | 12.7k | hb_blob_destroy (blob); | 394 | 12.7k | return hb_blob_get_empty (); | 395 | 12.7k | } | 396 | 30.0k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf>(hb_blob_t*) Line | Count | Source | 333 | 461k | { | 334 | 461k | bool sane; | 335 | | | 336 | 461k | init (blob); | 337 | | | 338 | 461k | retry: | 339 | 461k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 461k | start_processing (); | 342 | | | 343 | 461k | if (unlikely (!start)) | 344 | 330k | { | 345 | 330k | end_processing (); | 346 | 330k | return blob; | 347 | 330k | } | 348 | | | 349 | 131k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 131k | sane = t->sanitize (this); | 352 | 131k | if (sane) | 353 | 131k | { | 354 | 131k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 131k | } | 367 | 0 | else | 368 | 0 | { | 369 | 0 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 0 | } | 382 | | | 383 | 131k | end_processing (); | 384 | | | 385 | 131k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 131k | if (sane) | 387 | 131k | { | 388 | 131k | hb_blob_make_immutable (blob); | 389 | 131k | return blob; | 390 | 131k | } | 391 | 0 | else | 392 | 0 | { | 393 | 0 | hb_blob_destroy (blob); | 394 | 0 | return hb_blob_get_empty (); | 395 | 0 | } | 396 | 131k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OpenTypeFontFile>(hb_blob_t*) Line | Count | Source | 333 | 479k | { | 334 | 479k | bool sane; | 335 | | | 336 | 479k | init (blob); | 337 | | | 338 | 479k | retry: | 339 | 479k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 479k | start_processing (); | 342 | | | 343 | 479k | if (unlikely (!start)) | 344 | 403 | { | 345 | 403 | end_processing (); | 346 | 403 | return blob; | 347 | 403 | } | 348 | | | 349 | 479k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 479k | sane = t->sanitize (this); | 352 | 479k | if (sane) | 353 | 471k | { | 354 | 471k | if (edit_count) | 355 | 505 | { | 356 | 505 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 505 | edit_count = 0; | 360 | 505 | sane = t->sanitize (this); | 361 | 505 | if (edit_count) { | 362 | 6 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 6 | sane = false; | 364 | 6 | } | 365 | 505 | } | 366 | 471k | } | 367 | 8.15k | else | 368 | 8.15k | { | 369 | 8.15k | if (edit_count && !writable) { | 370 | 688 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 688 | end = start + blob->length; | 372 | | | 373 | 688 | if (start) | 374 | 635 | { | 375 | 635 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 635 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 635 | goto retry; | 379 | 635 | } | 380 | 688 | } | 381 | 8.15k | } | 382 | | | 383 | 478k | end_processing (); | 384 | | | 385 | 478k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 478k | if (sane) | 387 | 471k | { | 388 | 471k | hb_blob_make_immutable (blob); | 389 | 471k | return blob; | 390 | 471k | } | 391 | 7.53k | else | 392 | 7.53k | { | 393 | 7.53k | hb_blob_destroy (blob); | 394 | 7.53k | return hb_blob_get_empty (); | 395 | 7.53k | } | 396 | 478k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 425k | { | 345 | 425k | end_processing (); | 346 | 425k | return blob; | 347 | 425k | } | 348 | | | 349 | 49.3k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 49.3k | sane = t->sanitize (this); | 352 | 49.3k | if (sane) | 353 | 31.1k | { | 354 | 31.1k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 31.1k | } | 367 | 18.2k | else | 368 | 18.2k | { | 369 | 18.2k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 18.2k | } | 382 | | | 383 | 49.3k | end_processing (); | 384 | | | 385 | 49.3k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 49.3k | if (sane) | 387 | 31.1k | { | 388 | 31.1k | hb_blob_make_immutable (blob); | 389 | 31.1k | return blob; | 390 | 31.1k | } | 391 | 18.2k | else | 392 | 18.2k | { | 393 | 18.2k | hb_blob_destroy (blob); | 394 | 18.2k | return hb_blob_get_empty (); | 395 | 18.2k | } | 396 | 49.3k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 441k | { | 345 | 441k | end_processing (); | 346 | 441k | return blob; | 347 | 441k | } | 348 | | | 349 | 32.8k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 32.8k | sane = t->sanitize (this); | 352 | 32.8k | if (sane) | 353 | 20.3k | { | 354 | 20.3k | if (edit_count) | 355 | 341 | { | 356 | 341 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 341 | edit_count = 0; | 360 | 341 | sane = t->sanitize (this); | 361 | 341 | if (edit_count) { | 362 | 21 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 21 | sane = false; | 364 | 21 | } | 365 | 341 | } | 366 | 20.3k | } | 367 | 12.5k | else | 368 | 12.5k | { | 369 | 12.5k | if (edit_count && !writable) { | 370 | 411 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 411 | end = start + blob->length; | 372 | | | 373 | 411 | if (start) | 374 | 384 | { | 375 | 384 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 384 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 384 | goto retry; | 379 | 384 | } | 380 | 411 | } | 381 | 12.5k | } | 382 | | | 383 | 32.4k | end_processing (); | 384 | | | 385 | 32.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 32.4k | if (sane) | 387 | 20.3k | { | 388 | 20.3k | hb_blob_make_immutable (blob); | 389 | 20.3k | return blob; | 390 | 20.3k | } | 391 | 12.1k | else | 392 | 12.1k | { | 393 | 12.1k | hb_blob_destroy (blob); | 394 | 12.1k | return hb_blob_get_empty (); | 395 | 12.1k | } | 396 | 32.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 474k | retry: | 339 | 474k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 474k | start_processing (); | 342 | | | 343 | 474k | if (unlikely (!start)) | 344 | 452k | { | 345 | 452k | end_processing (); | 346 | 452k | return blob; | 347 | 452k | } | 348 | | | 349 | 21.9k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 21.9k | sane = t->sanitize (this); | 352 | 21.9k | if (sane) | 353 | 4.35k | { | 354 | 4.35k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 4.35k | } | 367 | 17.5k | else | 368 | 17.5k | { | 369 | 17.5k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 17.5k | } | 382 | | | 383 | 21.9k | end_processing (); | 384 | | | 385 | 21.9k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 21.9k | if (sane) | 387 | 4.35k | { | 388 | 4.35k | hb_blob_make_immutable (blob); | 389 | 4.35k | return blob; | 390 | 4.35k | } | 391 | 17.5k | else | 392 | 17.5k | { | 393 | 17.5k | hb_blob_destroy (blob); | 394 | 17.5k | return hb_blob_get_empty (); | 395 | 17.5k | } | 396 | 21.9k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::SVG>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 469k | retry: | 339 | 469k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 469k | start_processing (); | 342 | | | 343 | 469k | if (unlikely (!start)) | 344 | 463k | { | 345 | 463k | end_processing (); | 346 | 463k | return blob; | 347 | 463k | } | 348 | | | 349 | 5.30k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 5.30k | sane = t->sanitize (this); | 352 | 5.30k | if (sane) | 353 | 1.07k | { | 354 | 1.07k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 1.07k | } | 367 | 4.23k | else | 368 | 4.23k | { | 369 | 4.23k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 4.23k | } | 382 | | | 383 | 5.30k | end_processing (); | 384 | | | 385 | 5.30k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 5.30k | if (sane) | 387 | 1.07k | { | 388 | 1.07k | hb_blob_make_immutable (blob); | 389 | 1.07k | return blob; | 390 | 1.07k | } | 391 | 4.23k | else | 392 | 4.23k | { | 393 | 4.23k | hb_blob_destroy (blob); | 394 | 4.23k | return hb_blob_get_empty (); | 395 | 4.23k | } | 396 | 5.30k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 470k | retry: | 339 | 470k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 470k | start_processing (); | 342 | | | 343 | 470k | if (unlikely (!start)) | 344 | 466k | { | 345 | 466k | end_processing (); | 346 | 466k | return blob; | 347 | 466k | } | 348 | | | 349 | 4.32k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 4.32k | sane = t->sanitize (this); | 352 | 4.32k | if (sane) | 353 | 2.11k | { | 354 | 2.11k | if (edit_count) | 355 | 990 | { | 356 | 990 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 990 | edit_count = 0; | 360 | 990 | sane = t->sanitize (this); | 361 | 990 | if (edit_count) { | 362 | 1 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 1 | sane = false; | 364 | 1 | } | 365 | 990 | } | 366 | 2.11k | } | 367 | 2.21k | else | 368 | 2.21k | { | 369 | 2.21k | if (edit_count && !writable) { | 370 | 1.32k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 1.32k | end = start + blob->length; | 372 | | | 373 | 1.32k | if (start) | 374 | 1.29k | { | 375 | 1.29k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 1.29k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 1.29k | goto retry; | 379 | 1.29k | } | 380 | 1.32k | } | 381 | 2.21k | } | 382 | | | 383 | 3.03k | end_processing (); | 384 | | | 385 | 3.03k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 3.03k | if (sane) | 387 | 2.09k | { | 388 | 2.09k | hb_blob_make_immutable (blob); | 389 | 2.09k | return blob; | 390 | 2.09k | } | 391 | 932 | else | 392 | 932 | { | 393 | 932 | hb_blob_destroy (blob); | 394 | 932 | return hb_blob_get_empty (); | 395 | 932 | } | 396 | 3.03k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBDT>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 469k | retry: | 339 | 469k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 469k | start_processing (); | 342 | | | 343 | 469k | if (unlikely (!start)) | 344 | 466k | { | 345 | 466k | end_processing (); | 346 | 466k | return blob; | 347 | 466k | } | 348 | | | 349 | 2.39k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 2.39k | sane = t->sanitize (this); | 352 | 2.39k | if (sane) | 353 | 2.05k | { | 354 | 2.05k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 2.05k | } | 367 | 333 | else | 368 | 333 | { | 369 | 333 | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 333 | } | 382 | | | 383 | 2.39k | end_processing (); | 384 | | | 385 | 2.39k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 2.39k | if (sane) | 387 | 2.05k | { | 388 | 2.05k | hb_blob_make_immutable (blob); | 389 | 2.05k | return blob; | 390 | 2.05k | } | 391 | 333 | else | 392 | 333 | { | 393 | 333 | hb_blob_destroy (blob); | 394 | 333 | return hb_blob_get_empty (); | 395 | 333 | } | 396 | 2.39k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 469k | retry: | 339 | 469k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 469k | start_processing (); | 342 | | | 343 | 469k | if (unlikely (!start)) | 344 | 466k | { | 345 | 466k | end_processing (); | 346 | 466k | return blob; | 347 | 466k | } | 348 | | | 349 | 3.05k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 3.05k | sane = t->sanitize (this); | 352 | 3.05k | if (sane) | 353 | 1.71k | { | 354 | 1.71k | if (edit_count) | 355 | 756 | { | 356 | 756 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 756 | edit_count = 0; | 360 | 756 | sane = t->sanitize (this); | 361 | 756 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 756 | } | 366 | 1.71k | } | 367 | 1.34k | else | 368 | 1.34k | { | 369 | 1.34k | if (edit_count && !writable) { | 370 | 864 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 864 | end = start + blob->length; | 372 | | | 373 | 864 | if (start) | 374 | 834 | { | 375 | 834 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 834 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 834 | goto retry; | 379 | 834 | } | 380 | 864 | } | 381 | 1.34k | } | 382 | | | 383 | 2.22k | end_processing (); | 384 | | | 385 | 2.22k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 2.22k | if (sane) | 387 | 1.71k | { | 388 | 1.71k | hb_blob_make_immutable (blob); | 389 | 1.71k | return blob; | 390 | 1.71k | } | 391 | 511 | else | 392 | 511 | { | 393 | 511 | hb_blob_destroy (blob); | 394 | 511 | return hb_blob_get_empty (); | 395 | 511 | } | 396 | 2.22k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff1>(hb_blob_t*) Line | Count | Source | 333 | 464k | { | 334 | 464k | bool sane; | 335 | | | 336 | 464k | init (blob); | 337 | | | 338 | 464k | retry: | 339 | 464k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 464k | start_processing (); | 342 | | | 343 | 464k | if (unlikely (!start)) | 344 | 407k | { | 345 | 407k | end_processing (); | 346 | 407k | return blob; | 347 | 407k | } | 348 | | | 349 | 56.6k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 56.6k | sane = t->sanitize (this); | 352 | 56.6k | if (sane) | 353 | 45.2k | { | 354 | 45.2k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 45.2k | } | 367 | 11.3k | else | 368 | 11.3k | { | 369 | 11.3k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 11.3k | } | 382 | | | 383 | 56.6k | end_processing (); | 384 | | | 385 | 56.6k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 56.6k | if (sane) | 387 | 45.2k | { | 388 | 45.2k | hb_blob_make_immutable (blob); | 389 | 45.2k | return blob; | 390 | 45.2k | } | 391 | 11.3k | else | 392 | 11.3k | { | 393 | 11.3k | hb_blob_destroy (blob); | 394 | 11.3k | return hb_blob_get_empty (); | 395 | 11.3k | } | 396 | 56.6k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff2>(hb_blob_t*) Line | Count | Source | 333 | 422k | { | 334 | 422k | bool sane; | 335 | | | 336 | 422k | init (blob); | 337 | | | 338 | 422k | retry: | 339 | 422k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 422k | start_processing (); | 342 | | | 343 | 422k | if (unlikely (!start)) | 344 | 372k | { | 345 | 372k | end_processing (); | 346 | 372k | return blob; | 347 | 372k | } | 348 | | | 349 | 49.5k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 49.5k | sane = t->sanitize (this); | 352 | 49.5k | if (sane) | 353 | 41.0k | { | 354 | 41.0k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 41.0k | } | 367 | 8.55k | else | 368 | 8.55k | { | 369 | 8.55k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 8.55k | } | 382 | | | 383 | 49.5k | end_processing (); | 384 | | | 385 | 49.5k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 49.5k | if (sane) | 387 | 41.0k | { | 388 | 41.0k | hb_blob_make_immutable (blob); | 389 | 41.0k | return blob; | 390 | 41.0k | } | 391 | 8.55k | else | 392 | 8.55k | { | 393 | 8.55k | hb_blob_destroy (blob); | 394 | 8.55k | return hb_blob_get_empty (); | 395 | 8.55k | } | 396 | 49.5k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*) Line | Count | Source | 333 | 468k | { | 334 | 468k | bool sane; | 335 | | | 336 | 468k | init (blob); | 337 | | | 338 | 468k | retry: | 339 | 468k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 468k | start_processing (); | 342 | | | 343 | 468k | if (unlikely (!start)) | 344 | 465k | { | 345 | 465k | end_processing (); | 346 | 465k | return blob; | 347 | 465k | } | 348 | | | 349 | 3.71k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 3.71k | sane = t->sanitize (this); | 352 | 3.71k | if (sane) | 353 | 769 | { | 354 | 769 | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 769 | } | 367 | 2.94k | else | 368 | 2.94k | { | 369 | 2.94k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 2.94k | } | 382 | | | 383 | 3.71k | end_processing (); | 384 | | | 385 | 3.71k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 3.71k | if (sane) | 387 | 769 | { | 388 | 769 | hb_blob_make_immutable (blob); | 389 | 769 | return blob; | 390 | 769 | } | 391 | 2.94k | else | 392 | 2.94k | { | 393 | 2.94k | hb_blob_destroy (blob); | 394 | 2.94k | return hb_blob_get_empty (); | 395 | 2.94k | } | 396 | 3.71k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 469k | retry: | 339 | 469k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 469k | start_processing (); | 342 | | | 343 | 469k | if (unlikely (!start)) | 344 | 286k | { | 345 | 286k | end_processing (); | 346 | 286k | return blob; | 347 | 286k | } | 348 | | | 349 | 183k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 183k | sane = t->sanitize (this); | 352 | 183k | if (sane) | 353 | 94.8k | { | 354 | 94.8k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 94.8k | } | 367 | 88.2k | else | 368 | 88.2k | { | 369 | 88.2k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 88.2k | } | 382 | | | 383 | 183k | end_processing (); | 384 | | | 385 | 183k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 183k | if (sane) | 387 | 94.8k | { | 388 | 94.8k | hb_blob_make_immutable (blob); | 389 | 94.8k | return blob; | 390 | 94.8k | } | 391 | 88.2k | else | 392 | 88.2k | { | 393 | 88.2k | hb_blob_destroy (blob); | 394 | 88.2k | return hb_blob_get_empty (); | 395 | 88.2k | } | 396 | 183k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post>(hb_blob_t*) Line | Count | Source | 333 | 466k | { | 334 | 466k | bool sane; | 335 | | | 336 | 466k | init (blob); | 337 | | | 338 | 466k | retry: | 339 | 466k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 466k | start_processing (); | 342 | | | 343 | 466k | if (unlikely (!start)) | 344 | 301k | { | 345 | 301k | end_processing (); | 346 | 301k | return blob; | 347 | 301k | } | 348 | | | 349 | 164k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 164k | sane = t->sanitize (this); | 352 | 164k | if (sane) | 353 | 105k | { | 354 | 105k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 105k | } | 367 | 59.1k | else | 368 | 59.1k | { | 369 | 59.1k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 59.1k | } | 382 | | | 383 | 164k | end_processing (); | 384 | | | 385 | 164k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 164k | if (sane) | 387 | 105k | { | 388 | 105k | hb_blob_make_immutable (blob); | 389 | 105k | return blob; | 390 | 105k | } | 391 | 59.1k | else | 392 | 59.1k | { | 393 | 59.1k | hb_blob_destroy (blob); | 394 | 59.1k | return hb_blob_get_empty (); | 395 | 59.1k | } | 396 | 164k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB>(hb_blob_t*) Line | Count | Source | 333 | 469k | { | 334 | 469k | bool sane; | 335 | | | 336 | 469k | init (blob); | 337 | | | 338 | 613k | retry: | 339 | 613k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 613k | start_processing (); | 342 | | | 343 | 613k | if (unlikely (!start)) | 344 | 254k | { | 345 | 254k | end_processing (); | 346 | 254k | return blob; | 347 | 254k | } | 348 | | | 349 | 359k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 359k | sane = t->sanitize (this); | 352 | 359k | if (sane) | 353 | 179k | { | 354 | 179k | if (edit_count) | 355 | 111k | { | 356 | 111k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 111k | edit_count = 0; | 360 | 111k | sane = t->sanitize (this); | 361 | 111k | if (edit_count) { | 362 | 3.12k | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 3.12k | sane = false; | 364 | 3.12k | } | 365 | 111k | } | 366 | 179k | } | 367 | 179k | else | 368 | 179k | { | 369 | 179k | if (edit_count && !writable) { | 370 | 144k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 144k | end = start + blob->length; | 372 | | | 373 | 144k | if (start) | 374 | 144k | { | 375 | 144k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 144k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 144k | goto retry; | 379 | 144k | } | 380 | 144k | } | 381 | 179k | } | 382 | | | 383 | 215k | end_processing (); | 384 | | | 385 | 215k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 215k | if (sane) | 387 | 172k | { | 388 | 172k | hb_blob_make_immutable (blob); | 389 | 172k | return blob; | 390 | 172k | } | 391 | 42.6k | else | 392 | 42.6k | { | 393 | 42.6k | hb_blob_destroy (blob); | 394 | 42.6k | return hb_blob_get_empty (); | 395 | 42.6k | } | 396 | 215k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG>(hb_blob_t*) Line | Count | Source | 333 | 471k | { | 334 | 471k | bool sane; | 335 | | | 336 | 471k | init (blob); | 337 | | | 338 | 471k | retry: | 339 | 471k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 471k | start_processing (); | 342 | | | 343 | 471k | if (unlikely (!start)) | 344 | 464k | { | 345 | 464k | end_processing (); | 346 | 464k | return blob; | 347 | 464k | } | 348 | | | 349 | 7.21k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 7.21k | sane = t->sanitize (this); | 352 | 7.21k | if (sane) | 353 | 2.60k | { | 354 | 2.60k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 2.60k | } | 367 | 4.61k | else | 368 | 4.61k | { | 369 | 4.61k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 4.61k | } | 382 | | | 383 | 7.21k | end_processing (); | 384 | | | 385 | 7.21k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 7.21k | if (sane) | 387 | 2.60k | { | 388 | 2.60k | hb_blob_make_immutable (blob); | 389 | 2.60k | return blob; | 390 | 2.60k | } | 391 | 4.61k | else | 392 | 4.61k | { | 393 | 4.61k | hb_blob_destroy (blob); | 394 | 4.61k | return hb_blob_get_empty (); | 395 | 4.61k | } | 396 | 7.21k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::kern>(hb_blob_t*) Line | Count | Source | 333 | 426k | { | 334 | 426k | bool sane; | 335 | | | 336 | 426k | init (blob); | 337 | | | 338 | 426k | retry: | 339 | 426k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 426k | start_processing (); | 342 | | | 343 | 426k | if (unlikely (!start)) | 344 | 417k | { | 345 | 417k | end_processing (); | 346 | 417k | return blob; | 347 | 417k | } | 348 | | | 349 | 9.17k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 9.17k | sane = t->sanitize (this); | 352 | 9.17k | if (sane) | 353 | 7.65k | { | 354 | 7.65k | if (edit_count) | 355 | 0 | { | 356 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 0 | edit_count = 0; | 360 | 0 | sane = t->sanitize (this); | 361 | 0 | if (edit_count) { | 362 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 0 | sane = false; | 364 | 0 | } | 365 | 0 | } | 366 | 7.65k | } | 367 | 1.51k | else | 368 | 1.51k | { | 369 | 1.51k | if (edit_count && !writable) { | 370 | 0 | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 0 | end = start + blob->length; | 372 | |
| 373 | 0 | if (start) | 374 | 0 | { | 375 | 0 | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 0 | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 0 | goto retry; | 379 | 0 | } | 380 | 0 | } | 381 | 1.51k | } | 382 | | | 383 | 9.17k | end_processing (); | 384 | | | 385 | 9.17k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 9.17k | if (sane) | 387 | 7.65k | { | 388 | 7.65k | hb_blob_make_immutable (blob); | 389 | 7.65k | return blob; | 390 | 7.65k | } | 391 | 1.51k | else | 392 | 1.51k | { | 393 | 1.51k | hb_blob_destroy (blob); | 394 | 1.51k | return hb_blob_get_empty (); | 395 | 1.51k | } | 396 | 9.17k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 479k | retry: | 339 | 479k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 479k | start_processing (); | 342 | | | 343 | 479k | if (unlikely (!start)) | 344 | 459k | { | 345 | 459k | end_processing (); | 346 | 459k | return blob; | 347 | 459k | } | 348 | | | 349 | 20.0k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 20.0k | sane = t->sanitize (this); | 352 | 20.0k | if (sane) | 353 | 7.78k | { | 354 | 7.78k | if (edit_count) | 355 | 3.46k | { | 356 | 3.46k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 3.46k | edit_count = 0; | 360 | 3.46k | sane = t->sanitize (this); | 361 | 3.46k | if (edit_count) { | 362 | 232 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 232 | sane = false; | 364 | 232 | } | 365 | 3.46k | } | 366 | 7.78k | } | 367 | 12.2k | else | 368 | 12.2k | { | 369 | 12.2k | if (edit_count && !writable) { | 370 | 5.38k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 5.38k | end = start + blob->length; | 372 | | | 373 | 5.38k | if (start) | 374 | 5.35k | { | 375 | 5.35k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 5.35k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 5.35k | goto retry; | 379 | 5.35k | } | 380 | 5.38k | } | 381 | 12.2k | } | 382 | | | 383 | 14.6k | end_processing (); | 384 | | | 385 | 14.6k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 14.6k | if (sane) | 387 | 7.49k | { | 388 | 7.49k | hb_blob_make_immutable (blob); | 389 | 7.49k | return blob; | 390 | 7.49k | } | 391 | 7.16k | else | 392 | 7.16k | { | 393 | 7.16k | hb_blob_destroy (blob); | 394 | 7.16k | return hb_blob_get_empty (); | 395 | 7.16k | } | 396 | 14.6k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH>(hb_blob_t*) Line | Count | Source | 333 | 474k | { | 334 | 474k | bool sane; | 335 | | | 336 | 474k | init (blob); | 337 | | | 338 | 480k | retry: | 339 | 480k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 340 | | | 341 | 480k | start_processing (); | 342 | | | 343 | 480k | if (unlikely (!start)) | 344 | 466k | { | 345 | 466k | end_processing (); | 346 | 466k | return blob; | 347 | 466k | } | 348 | | | 349 | 13.9k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 350 | | | 351 | 13.9k | sane = t->sanitize (this); | 352 | 13.9k | if (sane) | 353 | 4.11k | { | 354 | 4.11k | if (edit_count) | 355 | 3.63k | { | 356 | 3.63k | DEBUG_MSG_FUNC (SANITIZE, start, "passed first round with %u edits; going for second round", edit_count); | 357 | | | 358 | | /* sanitize again to ensure no toe-stepping */ | 359 | 3.63k | edit_count = 0; | 360 | 3.63k | sane = t->sanitize (this); | 361 | 3.63k | if (edit_count) { | 362 | 263 | DEBUG_MSG_FUNC (SANITIZE, start, "requested %u edits in second round; FAILLING", edit_count); | 363 | 263 | sane = false; | 364 | 263 | } | 365 | 3.63k | } | 366 | 4.11k | } | 367 | 9.87k | else | 368 | 9.87k | { | 369 | 9.87k | if (edit_count && !writable) { | 370 | 6.35k | start = hb_blob_get_data_writable (blob, nullptr); | 371 | 6.35k | end = start + blob->length; | 372 | | | 373 | 6.35k | if (start) | 374 | 6.30k | { | 375 | 6.30k | writable = true; | 376 | | /* ok, we made it writable by relocating. try again */ | 377 | 6.30k | DEBUG_MSG_FUNC (SANITIZE, start, "retry"); | 378 | 6.30k | goto retry; | 379 | 6.30k | } | 380 | 6.35k | } | 381 | 9.87k | } | 382 | | | 383 | 7.67k | end_processing (); | 384 | | | 385 | 7.67k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 386 | 7.67k | if (sane) | 387 | 3.58k | { | 388 | 3.58k | hb_blob_make_immutable (blob); | 389 | 3.58k | return blob; | 390 | 3.58k | } | 391 | 4.09k | else | 392 | 4.09k | { | 393 | 4.09k | hb_blob_destroy (blob); | 394 | 4.09k | return hb_blob_get_empty (); | 395 | 4.09k | } | 396 | 7.67k | } |
|
397 | | |
398 | | template <typename Type> |
399 | | hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag) |
400 | 18.2M | { |
401 | 18.2M | if (!num_glyphs_set) |
402 | 11.1M | set_num_glyphs (hb_face_get_glyph_count (face)); |
403 | 18.2M | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); |
404 | 18.2M | } hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::morx>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 472k | { | 401 | 472k | if (!num_glyphs_set) | 402 | 472k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 472k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 472k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ltag>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 3.85k | { | 401 | 3.85k | if (!num_glyphs_set) | 402 | 3.85k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 3.85k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 3.85k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::mort>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 452k | { | 401 | 452k | if (!num_glyphs_set) | 402 | 452k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 452k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 452k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::kerx>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 472k | { | 401 | 472k | if (!num_glyphs_set) | 402 | 472k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 472k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 472k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ankr>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 12.1k | { | 401 | 12.1k | if (!num_glyphs_set) | 402 | 12.1k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 12.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 12.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::trak>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 465k | { | 401 | 465k | if (!num_glyphs_set) | 402 | 465k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 465k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 465k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::feat>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 474k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::loca>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 470k | { | 401 | 470k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 470k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 470k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 467k | { | 401 | 467k | if (!num_glyphs_set) | 402 | 467k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 467k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 467k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 467k | { | 401 | 467k | if (!num_glyphs_set) | 402 | 467k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 467k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 467k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hhea>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 473k | { | 401 | 473k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 473k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 473k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vhea>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 466k | { | 401 | 466k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 466k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 466k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 466k | { | 401 | 466k | if (!num_glyphs_set) | 402 | 466k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 466k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 466k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 466k | { | 401 | 466k | if (!num_glyphs_set) | 402 | 466k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 466k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 466k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 457k | { | 401 | 457k | if (!num_glyphs_set) | 402 | 457k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 457k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 457k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 461k | { | 401 | 461k | if (!num_glyphs_set) | 402 | 461k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 461k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 461k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::SVG>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBDT>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff1>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 464k | { | 401 | 464k | if (!num_glyphs_set) | 402 | 464k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 464k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 464k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff2>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 422k | { | 401 | 422k | if (!num_glyphs_set) | 402 | 422k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 422k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 422k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::meta>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 468k | { | 401 | 468k | if (!num_glyphs_set) | 402 | 468k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 468k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 468k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 466k | { | 401 | 466k | if (!num_glyphs_set) | 402 | 466k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 466k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 466k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 469k | { | 401 | 469k | if (!num_glyphs_set) | 402 | 469k | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 469k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 469k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 471k | { | 401 | 471k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 471k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 471k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::kern>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 426k | { | 401 | 426k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 426k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 426k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH>(hb_face_t const*, unsigned int) Line | Count | Source | 400 | 474k | { | 401 | 474k | if (!num_glyphs_set) | 402 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 403 | 474k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 404 | 474k | } |
|
405 | | |
406 | | const char *start, *end; |
407 | | mutable int max_ops, max_subtables; |
408 | | private: |
409 | | int recursion_depth; |
410 | | bool writable; |
411 | | unsigned int edit_count; |
412 | | hb_blob_t *blob; |
413 | | unsigned int num_glyphs; |
414 | | bool num_glyphs_set; |
415 | | }; |
416 | | |
417 | | struct hb_sanitize_with_object_t |
418 | | { |
419 | | template <typename T> |
420 | | hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c) |
421 | 1.04M | { c->set_object (obj); } hb_sanitize_with_object_t::hb_sanitize_with_object_t<AAT::ChainSubtable<AAT::ExtendedTypes> const*>(hb_sanitize_context_t*, AAT::ChainSubtable<AAT::ExtendedTypes> const* const&) Line | Count | Source | 421 | 320k | { c->set_object (obj); } |
hb_sanitize_with_object_t::hb_sanitize_with_object_t<AAT::ChainSubtable<AAT::ObsoleteTypes> const*>(hb_sanitize_context_t*, AAT::ChainSubtable<AAT::ObsoleteTypes> const* const&) Line | Count | Source | 421 | 307k | { c->set_object (obj); } |
hb_sanitize_with_object_t::hb_sanitize_with_object_t<AAT::KerxSubTable const*>(hb_sanitize_context_t*, AAT::KerxSubTable const* const&) Line | Count | Source | 421 | 155k | { c->set_object (obj); } |
hb_sanitize_with_object_t::hb_sanitize_with_object_t<OT::KernSubTable<OT::KernOTSubTableHeader> const*>(hb_sanitize_context_t*, OT::KernSubTable<OT::KernOTSubTableHeader> const* const&) Line | Count | Source | 421 | 178k | { c->set_object (obj); } |
hb_sanitize_with_object_t::hb_sanitize_with_object_t<OT::KernSubTable<OT::KernAATSubTableHeader> const*>(hb_sanitize_context_t*, OT::KernSubTable<OT::KernAATSubTableHeader> const* const&) Line | Count | Source | 421 | 81.5k | { c->set_object (obj); } |
|
422 | | ~hb_sanitize_with_object_t () |
423 | 1.04M | { c->reset_object (); } |
424 | | |
425 | | private: |
426 | | hb_sanitize_context_t *c; |
427 | | }; |
428 | | |
429 | | |
430 | | #endif /* HB_SANITIZE_HH */ |