/src/harfbuzz/src/hb-sanitize.hh
Line | Count | Source |
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 | | * - Return empty blob otherwise. |
68 | | * |
69 | | * |
70 | | * === The sanitize() contract === |
71 | | * |
72 | | * The sanitize() method of each object type shall return `true` if it's safe to |
73 | | * call other methods of the object, and `false` otherwise. |
74 | | * |
75 | | * Note that what sanitize() checks for might align with what the specification |
76 | | * describes as valid table data, but does not have to be. In particular, we |
77 | | * do NOT want to be pedantic and concern ourselves with validity checks that |
78 | | * are irrelevant to our use of the table. On the contrary, we want to be |
79 | | * lenient with error handling and accept invalid data to the extent that it |
80 | | * does not impose extra burden on us. |
81 | | * |
82 | | * Based on the sanitize contract, one can see that what we check for depends |
83 | | * on how we use the data in other table methods. Ie. if other table methods |
84 | | * assume that offsets do NOT point out of the table data block, then that's |
85 | | * something sanitize() must check for (GSUB/GPOS/GDEF/etc work this way). On |
86 | | * the other hand, if other methods do such checks themselves, then sanitize() |
87 | | * does not have to bother with them (glyf/local work this way). The choice |
88 | | * depends on the table structure and sanitize() performance. For example, to |
89 | | * check glyf/loca offsets in sanitize() would cost O(num-glyphs). We try hard |
90 | | * to avoid such costs during font loading. By postponing such checks to the |
91 | | * actual glyph loading, we reduce the sanitize cost to O(1) and total runtime |
92 | | * cost to O(used-glyphs). As such, this is preferred. |
93 | | * |
94 | | * The same argument can be made re GSUB/GPOS/GDEF, but there, the table |
95 | | * structure is so complicated that by checking all offsets at sanitize() time, |
96 | | * we make the code much simpler in other methods, as offsets and referenced |
97 | | * objects do not need to be validated at each use site. |
98 | | * |
99 | | * Note: |
100 | | * Sanitize was named so because it used to try to recover from errors by |
101 | | * modifying the data to make it valid. This is no longer the case, as it |
102 | | * could make HarfBuzz hallucinate new rules if there was aliasing in the |
103 | | * data. However, the name stuck. See: https://behdad.github.io/harfbust/ |
104 | | */ |
105 | | |
106 | | /* This limits sanitizing time on really broken fonts. */ |
107 | | #ifndef HB_SANITIZE_MAX_EDITS |
108 | | #define HB_SANITIZE_MAX_EDITS 32 |
109 | | #endif |
110 | | #ifndef HB_SANITIZE_MAX_OPS_FACTOR |
111 | | #define HB_SANITIZE_MAX_OPS_FACTOR 64 |
112 | | #endif |
113 | | #ifndef HB_SANITIZE_MAX_OPS_MIN |
114 | 3.44M | #define HB_SANITIZE_MAX_OPS_MIN 16384 |
115 | | #endif |
116 | | #ifndef HB_SANITIZE_MAX_OPS_MAX |
117 | 3.45M | #define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF |
118 | | #endif |
119 | | #ifndef HB_SANITIZE_MAX_SUBTABLES |
120 | 308k | #define HB_SANITIZE_MAX_SUBTABLES 0x4000 |
121 | | #endif |
122 | | |
123 | | struct hb_sanitize_context_t : |
124 | | hb_dispatch_context_t<hb_sanitize_context_t, bool, HB_DEBUG_SANITIZE> |
125 | | { |
126 | | hb_sanitize_context_t (const char *start_ = nullptr, const char *end_ = nullptr) : |
127 | 3.28M | start (start_), end (end_), |
128 | 3.28M | length (0), |
129 | 3.28M | max_ops (0), max_subtables (0), |
130 | 3.28M | recursion_depth (0), |
131 | 3.28M | writable (false), |
132 | 3.28M | blob (nullptr), |
133 | 3.28M | num_glyphs (65536), |
134 | 3.28M | num_glyphs_set (false), |
135 | 3.28M | lazy_some_gpos (false) {} |
136 | | |
137 | 0 | const char *get_name () { return "SANITIZE"; } |
138 | | template <typename T, typename F> |
139 | | bool may_dispatch (const T *obj HB_UNUSED, const F *format) |
140 | 7.02M | { |
141 | 7.02M | return format->sanitize (this) && |
142 | 7.02M | hb_barrier (); |
143 | 7.02M | } bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::SingleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::SingleSubst const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 170k | { | 141 | 170k | return format->sanitize (this) && | 142 | 170k | hb_barrier (); | 143 | 170k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::MultipleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::MultipleSubst const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 102k | { | 141 | 102k | return format->sanitize (this) && | 142 | 101k | hb_barrier (); | 143 | 102k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::AlternateSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::AlternateSubst const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 186k | { | 141 | 186k | return format->sanitize (this) && | 142 | 185k | hb_barrier (); | 143 | 186k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::LigatureSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::LigatureSubst const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 79.4k | { | 141 | 79.4k | return format->sanitize (this) && | 142 | 79.3k | hb_barrier (); | 143 | 79.4k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Context, OT::NumType<true, unsigned short, 2u> >(OT::Context const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 109k | { | 141 | 109k | return format->sanitize (this) && | 142 | 109k | hb_barrier (); | 143 | 109k | } |
bool hb_sanitize_context_t::may_dispatch<OT::ChainContext, OT::NumType<true, unsigned short, 2u> >(OT::ChainContext const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 196k | { | 141 | 196k | return format->sanitize (this) && | 142 | 196k | hb_barrier (); | 143 | 196k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst>, OT::NumType<true, unsigned short, 2u> >(OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst> const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 113k | { | 141 | 113k | return format->sanitize (this) && | 142 | 113k | hb_barrier (); | 143 | 113k | } |
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 | 140 | 22.2k | { | 141 | 22.2k | return format->sanitize (this) && | 142 | 22.2k | hb_barrier (); | 143 | 22.2k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::ReverseChainSingleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::ReverseChainSingleSubst const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 88.8k | { | 141 | 88.8k | return format->sanitize (this) && | 142 | 88.7k | hb_barrier (); | 143 | 88.8k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::SinglePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::SinglePos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 131k | { | 141 | 131k | return format->sanitize (this) && | 142 | 131k | hb_barrier (); | 143 | 131k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::PairPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::PairPos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 121k | { | 141 | 121k | return format->sanitize (this) && | 142 | 121k | hb_barrier (); | 143 | 121k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::CursivePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::CursivePos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 211k | { | 141 | 211k | return format->sanitize (this) && | 142 | 211k | hb_barrier (); | 143 | 211k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkBasePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkBasePos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 75.2k | { | 141 | 75.2k | return format->sanitize (this) && | 142 | 75.1k | hb_barrier (); | 143 | 75.2k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkLigPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkLigPos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 55.9k | { | 141 | 55.9k | return format->sanitize (this) && | 142 | 55.8k | hb_barrier (); | 143 | 55.9k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkMarkPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkMarkPos const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 39.1k | { | 141 | 39.1k | return format->sanitize (this) && | 142 | 39.0k | hb_barrier (); | 143 | 39.1k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GPOS_impl::ExtensionPos>, OT::NumType<true, unsigned short, 2u> >(OT::Extension<OT::Layout::GPOS_impl::ExtensionPos> const*, OT::NumType<true, unsigned short, 2u> const*) Line | Count | Source | 140 | 102k | { | 141 | 102k | return format->sanitize (this) && | 142 | 102k | hb_barrier (); | 143 | 102k | } |
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 | 140 | 9.62k | { | 141 | 9.62k | return format->sanitize (this) && | 142 | 9.61k | hb_barrier (); | 143 | 9.62k | } |
bool hb_sanitize_context_t::may_dispatch<OT::Paint, OT::NumType<true, unsigned char, 1u> >(OT::Paint const*, OT::NumType<true, unsigned char, 1u> const*) Line | Count | Source | 140 | 5.15M | { | 141 | 5.15M | return format->sanitize (this) && | 142 | 5.15M | hb_barrier (); | 143 | 5.15M | } |
bool hb_sanitize_context_t::may_dispatch<OT::ClipBox, OT::NumType<true, unsigned char, 1u> >(OT::ClipBox const*, OT::NumType<true, unsigned char, 1u> const*) Line | Count | Source | 140 | 51.7k | { | 141 | 51.7k | return format->sanitize (this) && | 142 | 51.7k | hb_barrier (); | 143 | 51.7k | } |
|
144 | 14.6M | static return_t default_return_value () { return true; } |
145 | 2.75k | static return_t no_dispatch_return_value () { return false; } |
146 | 0 | bool stop_sublookup_iteration (const return_t r) const { return !r; } |
147 | | |
148 | | bool visit_subtables (unsigned count) |
149 | 308k | { |
150 | 308k | max_subtables += count; |
151 | 308k | return max_subtables < HB_SANITIZE_MAX_SUBTABLES; |
152 | 308k | } |
153 | | |
154 | | private: |
155 | | template <typename T, typename ...Ts> auto |
156 | | _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN |
157 | | ( obj.sanitize (this, std::forward<Ts> (ds)...) ) |
158 | | template <typename T, typename ...Ts> auto |
159 | | _dispatch (const T &obj, hb_priority<0>, Ts&&... ds) HB_AUTO_RETURN |
160 | | ( obj.dispatch (this, std::forward<Ts> (ds)...) ) |
161 | | public: |
162 | | template <typename T, typename ...Ts> auto |
163 | | dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN |
164 | | ( _dispatch (obj, hb_prioritize, std::forward<Ts> (ds)...) ) |
165 | | |
166 | 112k | hb_sanitize_context_t (hb_blob_t *b) : hb_sanitize_context_t () |
167 | 112k | { |
168 | 112k | init (b); |
169 | | |
170 | 112k | if (blob) |
171 | 112k | start_processing (); |
172 | 112k | } |
173 | | |
174 | | ~hb_sanitize_context_t () |
175 | 3.28M | { |
176 | 3.28M | if (blob) |
177 | 112k | end_processing (); |
178 | 3.28M | } |
179 | | |
180 | | void init (hb_blob_t *b) |
181 | 3.44M | { |
182 | 3.44M | this->blob = hb_blob_reference (b); |
183 | 3.44M | this->writable = false; |
184 | 3.44M | } |
185 | | |
186 | | void set_num_glyphs (unsigned int num_glyphs_) |
187 | 3.06M | { |
188 | 3.06M | num_glyphs = num_glyphs_; |
189 | 3.06M | num_glyphs_set = true; |
190 | 3.06M | } |
191 | 4.21M | unsigned int get_num_glyphs () { return num_glyphs; } |
192 | | |
193 | 18.4k | void set_max_ops (int max_ops_) { max_ops = max_ops_; } |
194 | | |
195 | | template <typename T> |
196 | | void set_object (const T *obj) |
197 | 12.1k | { |
198 | 12.1k | reset_object (); |
199 | | |
200 | 12.1k | if (!obj) return; |
201 | | |
202 | 3.18k | const char *obj_start = (const char *) obj; |
203 | 3.18k | if (unlikely (obj_start < this->start || this->end <= obj_start)) |
204 | 0 | { |
205 | 0 | this->start = this->end = nullptr; |
206 | 0 | this->length = 0; |
207 | 0 | } |
208 | 3.18k | else |
209 | 3.18k | { |
210 | 3.18k | this->start = obj_start; |
211 | 3.18k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); |
212 | 3.18k | this->length = this->end - this->start; |
213 | 3.18k | } |
214 | 3.18k | } void hb_sanitize_context_t::set_object<AAT::KerxSubTable>(AAT::KerxSubTable const*) Line | Count | Source | 197 | 5.04k | { | 198 | 5.04k | reset_object (); | 199 | | | 200 | 5.04k | if (!obj) return; | 201 | | | 202 | 576 | const char *obj_start = (const char *) obj; | 203 | 576 | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 204 | 0 | { | 205 | 0 | this->start = this->end = nullptr; | 206 | 0 | this->length = 0; | 207 | 0 | } | 208 | 576 | else | 209 | 576 | { | 210 | 576 | this->start = obj_start; | 211 | 576 | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 212 | 576 | this->length = this->end - this->start; | 213 | 576 | } | 214 | 576 | } |
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernOTSubTableHeader> >(OT::KernSubTable<OT::KernOTSubTableHeader> const*) Line | Count | Source | 197 | 3.95k | { | 198 | 3.95k | reset_object (); | 199 | | | 200 | 3.95k | if (!obj) return; | 201 | | | 202 | 1.51k | const char *obj_start = (const char *) obj; | 203 | 1.51k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 204 | 0 | { | 205 | 0 | this->start = this->end = nullptr; | 206 | 0 | this->length = 0; | 207 | 0 | } | 208 | 1.51k | else | 209 | 1.51k | { | 210 | 1.51k | this->start = obj_start; | 211 | 1.51k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 212 | 1.51k | this->length = this->end - this->start; | 213 | 1.51k | } | 214 | 1.51k | } |
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernAATSubTableHeader> >(OT::KernSubTable<OT::KernAATSubTableHeader> const*) Line | Count | Source | 197 | 3.11k | { | 198 | 3.11k | reset_object (); | 199 | | | 200 | 3.11k | if (!obj) return; | 201 | | | 202 | 1.09k | const char *obj_start = (const char *) obj; | 203 | 1.09k | if (unlikely (obj_start < this->start || this->end <= obj_start)) | 204 | 0 | { | 205 | 0 | this->start = this->end = nullptr; | 206 | 0 | this->length = 0; | 207 | 0 | } | 208 | 1.09k | else | 209 | 1.09k | { | 210 | 1.09k | this->start = obj_start; | 211 | 1.09k | this->end = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ()); | 212 | 1.09k | this->length = this->end - this->start; | 213 | 1.09k | } | 214 | 1.09k | } |
|
215 | | |
216 | | void reset_object () |
217 | 3.46M | { |
218 | 3.46M | if (this->blob) |
219 | 3.46M | { |
220 | 3.46M | this->start = this->blob->data; |
221 | 3.46M | this->end = this->start + this->blob->length; |
222 | 3.46M | } |
223 | 3.46M | this->length = this->end - this->start; |
224 | 3.46M | assert (this->start <= this->end); /* Must not overflow. */ |
225 | 3.46M | } |
226 | | |
227 | | void start_processing (const char *start_ = nullptr, const char *end_ = nullptr) |
228 | 3.44M | { |
229 | 3.44M | if (start_) |
230 | 0 | { |
231 | 0 | this->start = start_; |
232 | 0 | this->end = end_; |
233 | 0 | } |
234 | 3.44M | reset_object (); |
235 | 3.44M | unsigned m; |
236 | 3.44M | if (unlikely (hb_unsigned_mul_overflows (this->end - this->start, HB_SANITIZE_MAX_OPS_FACTOR, &m))) |
237 | 0 | this->max_ops = HB_SANITIZE_MAX_OPS_MAX; |
238 | 3.44M | else |
239 | 3.44M | this->max_ops = hb_clamp (m, |
240 | 3.44M | (unsigned) HB_SANITIZE_MAX_OPS_MIN, |
241 | 3.44M | (unsigned) HB_SANITIZE_MAX_OPS_MAX); |
242 | 3.44M | this->debug_depth = 0; |
243 | 3.44M | this->recursion_depth = 0; |
244 | | |
245 | 3.44M | DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1, |
246 | 3.44M | "start [%p..%p] (%lu bytes)", |
247 | 3.44M | this->start, this->end, |
248 | 3.44M | (unsigned long) (this->end - this->start)); |
249 | 3.44M | } |
250 | | |
251 | | void end_processing () |
252 | 3.58M | { |
253 | 3.58M | DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1, |
254 | 3.58M | "end [%p..%p]", |
255 | 3.58M | this->start, this->end); |
256 | | |
257 | 3.58M | hb_blob_destroy (this->blob); |
258 | 3.58M | this->blob = nullptr; |
259 | 3.58M | this->start = this->end = nullptr; |
260 | 3.58M | this->length = 0; |
261 | 3.58M | } |
262 | | |
263 | | bool check_ops(unsigned count) |
264 | 676k | { |
265 | | /* Avoid underflow */ |
266 | 676k | if (unlikely (this->max_ops < 0 || count >= (unsigned) this->max_ops)) |
267 | 264 | { |
268 | 264 | this->max_ops = -1; |
269 | 264 | return false; |
270 | 264 | } |
271 | 676k | this->max_ops -= (int) count; |
272 | 676k | return true; |
273 | 676k | } |
274 | | |
275 | | #ifndef HB_OPTIMIZE_SIZE |
276 | | HB_ALWAYS_INLINE |
277 | | #endif |
278 | | bool check_range (const void *base, |
279 | | unsigned int len) const |
280 | 38.6M | { |
281 | 38.6M | const char *p = (const char *) base; |
282 | 38.6M | bool ok = (uintptr_t) (p - this->start) <= this->length && |
283 | 27.9M | (unsigned int) (this->end - p) >= len && |
284 | 25.7M | ((this->max_ops -= len) > 0); |
285 | | |
286 | 38.6M | DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0, |
287 | 38.6M | "check_range [%p..%p]" |
288 | 38.6M | " (%u bytes) in [%p..%p] -> %s", |
289 | 38.6M | p, p + len, len, |
290 | 38.6M | this->start, this->end, |
291 | 38.6M | ok ? "OK" : "OUT-OF-RANGE"); |
292 | | |
293 | 38.6M | return likely (ok); |
294 | 38.6M | } |
295 | | #ifndef HB_OPTIMIZE_SIZE |
296 | | HB_ALWAYS_INLINE |
297 | | #endif |
298 | | bool check_range_fast (const void *base, |
299 | | unsigned int len) const |
300 | 0 | { |
301 | 0 | const char *p = (const char *) base; |
302 | 0 | bool ok = ((uintptr_t) (p - this->start) <= this->length && |
303 | 0 | (unsigned int) (this->end - p) >= len); |
304 | 0 |
|
305 | 0 | DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0, |
306 | 0 | "check_range_fast [%p..%p]" |
307 | 0 | " (%u bytes) in [%p..%p] -> %s", |
308 | 0 | p, p + len, len, |
309 | 0 | this->start, this->end, |
310 | 0 | ok ? "OK" : "OUT-OF-RANGE"); |
311 | 0 |
|
312 | 0 | return likely (ok); |
313 | 0 | } |
314 | | |
315 | | #ifndef HB_OPTIMIZE_SIZE |
316 | | HB_ALWAYS_INLINE |
317 | | #endif |
318 | | bool check_point (const void *base) const |
319 | 918M | { |
320 | 918M | const char *p = (const char *) base; |
321 | 918M | bool ok = (uintptr_t) (p - this->start) <= this->length; |
322 | | |
323 | 918M | DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0, |
324 | 918M | "check_point [%p]" |
325 | 918M | " in [%p..%p] -> %s", |
326 | 918M | p, |
327 | 918M | this->start, this->end, |
328 | 918M | ok ? "OK" : "OUT-OF-RANGE"); |
329 | | |
330 | 918M | return likely (ok); |
331 | 918M | } |
332 | | |
333 | | template <typename T> |
334 | | bool check_range (const T *base, |
335 | | unsigned int a, |
336 | | unsigned int b) const |
337 | 27.5M | { |
338 | 27.5M | unsigned m; |
339 | 27.5M | return !hb_unsigned_mul_overflows (a, b, &m) && |
340 | 27.2M | this->check_range (base, m); |
341 | 27.5M | } bool hb_sanitize_context_t::check_range<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 19.3k | { | 338 | 19.3k | unsigned m; | 339 | 19.3k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 19.3k | this->check_range (base, m); | 341 | 19.3k | } |
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 583k | { | 338 | 583k | unsigned m; | 339 | 583k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 583k | this->check_range (base, m); | 341 | 583k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 5.79k | { | 338 | 5.79k | unsigned m; | 339 | 5.79k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 5.79k | this->check_range (base, m); | 341 | 5.79k | } |
bool hb_sanitize_context_t::check_range<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 5.72k | { | 338 | 5.72k | unsigned m; | 339 | 5.72k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 5.72k | this->check_range (base, m); | 341 | 5.72k | } |
bool hb_sanitize_context_t::check_range<AAT::Feature>(AAT::Feature const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 5.61k | { | 338 | 5.61k | unsigned m; | 339 | 5.61k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 5.61k | this->check_range (base, m); | 341 | 5.61k | } |
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 3.06M | { | 338 | 3.06M | unsigned m; | 339 | 3.06M | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 3.06M | this->check_range (base, m); | 341 | 3.06M | } |
bool hb_sanitize_context_t::check_range<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 6.02k | { | 338 | 6.02k | unsigned m; | 339 | 6.02k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 6.02k | this->check_range (base, m); | 341 | 6.02k | } |
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 | 337 | 841 | { | 338 | 841 | unsigned m; | 339 | 841 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 841 | this->check_range (base, m); | 341 | 841 | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 455 | { | 338 | 455 | unsigned m; | 339 | 455 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 455 | this->check_range (base, m); | 341 | 455 | } |
bool hb_sanitize_context_t::check_range<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 13.3M | { | 338 | 13.3M | unsigned m; | 339 | 13.3M | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 13.3M | this->check_range (base, m); | 341 | 13.3M | } |
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 | 337 | 567 | { | 338 | 567 | unsigned m; | 339 | 567 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 567 | this->check_range (base, m); | 341 | 567 | } |
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 | 337 | 1.46k | { | 338 | 1.46k | unsigned m; | 339 | 1.46k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 1.46k | this->check_range (base, m); | 341 | 1.46k | } |
bool hb_sanitize_context_t::check_range<OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > >(OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 4.77k | { | 338 | 4.77k | unsigned m; | 339 | 4.77k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 4.77k | this->check_range (base, m); | 341 | 4.77k | } |
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 | 337 | 5.43k | { | 338 | 5.43k | unsigned m; | 339 | 5.43k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 5.43k | this->check_range (base, m); | 341 | 5.43k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 4.40k | { | 338 | 4.40k | unsigned m; | 339 | 4.40k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 4.40k | this->check_range (base, m); | 341 | 4.40k | } |
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 | 337 | 2.39k | { | 338 | 2.39k | unsigned m; | 339 | 2.39k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 2.39k | this->check_range (base, m); | 341 | 2.39k | } |
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 | 337 | 422 | { | 338 | 422 | unsigned m; | 339 | 422 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 422 | this->check_range (base, m); | 341 | 422 | } |
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 | 337 | 734 | { | 338 | 734 | unsigned m; | 339 | 734 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 734 | this->check_range (base, m); | 341 | 734 | } |
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 8.54k | { | 338 | 8.54k | unsigned m; | 339 | 8.54k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 8.54k | this->check_range (base, m); | 341 | 8.54k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 1.65k | { | 338 | 1.65k | unsigned m; | 339 | 1.65k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 1.65k | this->check_range (base, m); | 341 | 1.65k | } |
bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 9.25M | { | 338 | 9.25M | unsigned m; | 339 | 9.25M | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 8.94M | this->check_range (base, m); | 341 | 9.25M | } |
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 91 | { | 338 | 91 | unsigned m; | 339 | 91 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 91 | this->check_range (base, m); | 341 | 91 | } |
bool hb_sanitize_context_t::check_range<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 66 | { | 338 | 66 | unsigned m; | 339 | 66 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 66 | this->check_range (base, m); | 341 | 66 | } |
bool hb_sanitize_context_t::check_range<AAT::FeatureName>(AAT::FeatureName const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 35 | { | 338 | 35 | unsigned m; | 339 | 35 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 35 | this->check_range (base, m); | 341 | 35 | } |
bool hb_sanitize_context_t::check_range<AAT::SettingName>(AAT::SettingName const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 595 | { | 338 | 595 | unsigned m; | 339 | 595 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 595 | this->check_range (base, m); | 341 | 595 | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 235k | { | 338 | 235k | unsigned m; | 339 | 235k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 235k | this->check_range (base, m); | 341 | 235k | } |
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 | 337 | 269k | { | 338 | 269k | unsigned m; | 339 | 269k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 269k | this->check_range (base, m); | 341 | 269k | } |
bool hb_sanitize_context_t::check_range<void>(void const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 22.4k | { | 338 | 22.4k | unsigned m; | 339 | 22.4k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 22.4k | this->check_range (base, m); | 341 | 22.4k | } |
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 | 337 | 1.91k | { | 338 | 1.91k | unsigned m; | 339 | 1.91k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 1.91k | this->check_range (base, m); | 341 | 1.91k | } |
bool hb_sanitize_context_t::check_range<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 3.80k | { | 338 | 3.80k | unsigned m; | 339 | 3.80k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 3.80k | this->check_range (base, m); | 341 | 3.80k | } |
bool hb_sanitize_context_t::check_range<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 4.76k | { | 338 | 4.76k | unsigned m; | 339 | 4.76k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 4.76k | this->check_range (base, m); | 341 | 4.76k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 4.52k | { | 338 | 4.52k | unsigned m; | 339 | 4.52k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 4.52k | this->check_range (base, m); | 341 | 4.52k | } |
bool hb_sanitize_context_t::check_range<OT::Index>(OT::Index const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 516 | { | 338 | 516 | unsigned m; | 339 | 516 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 516 | this->check_range (base, m); | 341 | 516 | } |
bool hb_sanitize_context_t::check_range<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 20.0k | { | 338 | 20.0k | unsigned m; | 339 | 20.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 20.0k | this->check_range (base, m); | 341 | 20.0k | } |
bool hb_sanitize_context_t::check_range<OT::LayerRecord>(OT::LayerRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 19.5k | { | 338 | 19.5k | unsigned m; | 339 | 19.5k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 19.5k | this->check_range (base, m); | 341 | 19.5k | } |
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >(OT::HBFixed<OT::NumType<true, short, 2u>, 14u> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 9.68k | { | 338 | 9.68k | unsigned m; | 339 | 9.68k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 9.62k | this->check_range (base, m); | 341 | 9.68k | } |
bool hb_sanitize_context_t::check_range<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 476k | { | 338 | 476k | unsigned m; | 339 | 476k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 476k | this->check_range (base, m); | 341 | 476k | } |
bool hb_sanitize_context_t::check_range<OT::AxisRecord>(OT::AxisRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 15.2k | { | 338 | 15.2k | unsigned m; | 339 | 15.2k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 15.2k | this->check_range (base, m); | 341 | 15.2k | } |
bool hb_sanitize_context_t::check_range<OT::InstanceRecord>(OT::InstanceRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 15.0k | { | 338 | 15.0k | unsigned m; | 339 | 15.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 15.0k | this->check_range (base, m); | 341 | 15.0k | } |
bool hb_sanitize_context_t::check_range<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 1.06k | { | 338 | 1.06k | unsigned m; | 339 | 1.06k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 1.04k | this->check_range (base, m); | 341 | 1.06k | } |
bool hb_sanitize_context_t::check_range<OT::Offset<OT::NumType<true, unsigned int, 4u>, true> >(OT::Offset<OT::NumType<true, unsigned int, 4u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 353 | { | 338 | 353 | unsigned m; | 339 | 353 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 353 | this->check_range (base, m); | 341 | 353 | } |
bool hb_sanitize_context_t::check_range<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 308 | { | 338 | 308 | unsigned m; | 339 | 308 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 308 | this->check_range (base, m); | 341 | 308 | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 1.75k | { | 338 | 1.75k | unsigned m; | 339 | 1.75k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 1.75k | this->check_range (base, m); | 341 | 1.75k | } |
bool hb_sanitize_context_t::check_range<unsigned char>(unsigned char const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 76.6k | { | 338 | 76.6k | unsigned m; | 339 | 76.6k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 76.6k | this->check_range (base, m); | 341 | 76.6k | } |
bool hb_sanitize_context_t::check_range<OT::NameRecord>(OT::NameRecord const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 7.23k | { | 338 | 7.23k | unsigned m; | 339 | 7.23k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 7.23k | this->check_range (base, m); | 341 | 7.23k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, 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 | 337 | 30.0k | { | 338 | 30.0k | unsigned m; | 339 | 30.0k | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 30.0k | this->check_range (base, m); | 341 | 30.0k | } |
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 337 | 907 | { | 338 | 907 | unsigned m; | 339 | 907 | return !hb_unsigned_mul_overflows (a, b, &m) && | 340 | 907 | this->check_range (base, m); | 341 | 907 | } |
|
342 | | |
343 | | template <typename T> |
344 | | bool check_range (const T *base, |
345 | | unsigned int a, |
346 | | unsigned int b, |
347 | | unsigned int c) const |
348 | 8.10M | { |
349 | 8.10M | unsigned m; |
350 | 8.10M | return !hb_unsigned_mul_overflows (a, b, &m) && |
351 | 8.10M | this->check_range (base, m, c); |
352 | 8.10M | } bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int, unsigned int) const Line | Count | Source | 348 | 8.02M | { | 349 | 8.02M | unsigned m; | 350 | 8.02M | return !hb_unsigned_mul_overflows (a, b, &m) && | 351 | 8.02M | this->check_range (base, m, c); | 352 | 8.02M | } |
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int, unsigned int) const Line | Count | Source | 348 | 84.2k | { | 349 | 84.2k | unsigned m; | 350 | 84.2k | return !hb_unsigned_mul_overflows (a, b, &m) && | 351 | 84.2k | this->check_range (base, m, c); | 352 | 84.2k | } |
|
353 | | |
354 | | template <typename T> |
355 | | HB_ALWAYS_INLINE |
356 | | bool check_array_sized (const T *base, unsigned int len, unsigned len_size) const |
357 | 7.75M | { |
358 | 7.75M | if (len_size >= 4) |
359 | 158k | { |
360 | 158k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) |
361 | 293 | return false; |
362 | 158k | } |
363 | 7.59M | else |
364 | 7.59M | len = len * hb_static_size (T); |
365 | 7.75M | return this->check_range (base, len); |
366 | 7.75M | } bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 199k | { | 358 | 199k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 199k | else | 364 | 199k | len = len * hb_static_size (T); | 365 | 199k | return this->check_range (base, len); | 366 | 199k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 186k | { | 358 | 186k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 186k | else | 364 | 186k | len = len * hb_static_size (T); | 365 | 186k | return this->check_range (base, len); | 366 | 186k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 34.3k | { | 358 | 34.3k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 34.3k | else | 364 | 34.3k | len = len * hb_static_size (T); | 365 | 34.3k | return this->check_range (base, len); | 366 | 34.3k | } |
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.19M | { | 358 | 1.19M | if (len_size >= 4) | 359 | 682 | { | 360 | 682 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 41 | return false; | 362 | 682 | } | 363 | 1.19M | else | 364 | 1.19M | len = len * hb_static_size (T); | 365 | 1.19M | return this->check_range (base, len); | 366 | 1.19M | } |
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 68.5k | { | 358 | 68.5k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 68.5k | else | 364 | 68.5k | len = len * hb_static_size (T); | 365 | 68.5k | return this->check_range (base, len); | 366 | 68.5k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.37k | { | 358 | 1.37k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.37k | else | 364 | 1.37k | len = len * hb_static_size (T); | 365 | 1.37k | return this->check_range (base, len); | 366 | 1.37k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.83k | { | 358 | 1.83k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.83k | else | 364 | 1.83k | len = len * hb_static_size (T); | 365 | 1.83k | return this->check_range (base, len); | 366 | 1.83k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 54.8k | { | 358 | 54.8k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 54.8k | else | 364 | 54.8k | len = len * hb_static_size (T); | 365 | 54.8k | return this->check_range (base, len); | 366 | 54.8k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.12k | { | 358 | 3.12k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 3.12k | else | 364 | 3.12k | len = len * hb_static_size (T); | 365 | 3.12k | return this->check_range (base, len); | 366 | 3.12k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 19.5k | { | 358 | 19.5k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 19.5k | else | 364 | 19.5k | len = len * hb_static_size (T); | 365 | 19.5k | return this->check_range (base, len); | 366 | 19.5k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::Script> >(OT::Record<OT::Script> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 54.7k | { | 358 | 54.7k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 54.7k | else | 364 | 54.7k | len = len * hb_static_size (T); | 365 | 54.7k | return this->check_range (base, len); | 366 | 54.7k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Index>(OT::Index const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 2.06M | { | 358 | 2.06M | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 2.06M | else | 364 | 2.06M | len = len * hb_static_size (T); | 365 | 2.06M | return this->check_range (base, len); | 366 | 2.06M | } |
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 220k | { | 358 | 220k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 220k | else | 364 | 220k | len = len * hb_static_size (T); | 365 | 220k | return this->check_range (base, len); | 366 | 220k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 51.6k | { | 358 | 51.6k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 51.6k | else | 364 | 51.6k | len = len * hb_static_size (T); | 365 | 51.6k | return this->check_range (base, len); | 366 | 51.6k | } |
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned int, 3u> >(OT::NumType<true, unsigned int, 3u> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 818 | { | 358 | 818 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 818 | else | 364 | 818 | len = len * hb_static_size (T); | 365 | 818 | return this->check_range (base, len); | 366 | 818 | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 31.7k | { | 358 | 31.7k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 31.7k | else | 364 | 31.7k | len = len * hb_static_size (T); | 365 | 31.7k | return this->check_range (base, len); | 366 | 31.7k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 308k | { | 358 | 308k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 308k | else | 364 | 308k | len = len * hb_static_size (T); | 365 | 308k | return this->check_range (base, len); | 366 | 308k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 208k | { | 358 | 208k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 208k | else | 364 | 208k | len = len * hb_static_size (T); | 365 | 208k | return this->check_range (base, len); | 366 | 208k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 27.7k | { | 358 | 27.7k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 27.7k | else | 364 | 27.7k | len = len * hb_static_size (T); | 365 | 27.7k | return this->check_range (base, len); | 366 | 27.7k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.94k | { | 358 | 3.94k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 3.94k | else | 364 | 3.94k | len = len * hb_static_size (T); | 365 | 3.94k | return this->check_range (base, len); | 366 | 3.94k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 14.0k | { | 358 | 14.0k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 14.0k | else | 364 | 14.0k | len = len * hb_static_size (T); | 365 | 14.0k | return this->check_range (base, len); | 366 | 14.0k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 5.40k | { | 358 | 5.40k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 5.40k | else | 364 | 5.40k | len = len * hb_static_size (T); | 365 | 5.40k | return this->check_range (base, len); | 366 | 5.40k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 33.5k | { | 358 | 33.5k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 33.5k | else | 364 | 33.5k | len = len * hb_static_size (T); | 365 | 33.5k | return this->check_range (base, len); | 366 | 33.5k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 86.4k | { | 358 | 86.4k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 86.4k | else | 364 | 86.4k | len = len * hb_static_size (T); | 365 | 86.4k | return this->check_range (base, len); | 366 | 86.4k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 7.12k | { | 358 | 7.12k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 7.12k | else | 364 | 7.12k | len = len * hb_static_size (T); | 365 | 7.12k | return this->check_range (base, len); | 366 | 7.12k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.81k | { | 358 | 3.81k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 3.81k | else | 364 | 3.81k | len = len * hb_static_size (T); | 365 | 3.81k | return this->check_range (base, len); | 366 | 3.81k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 31.4k | { | 358 | 31.4k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 31.4k | else | 364 | 31.4k | len = len * hb_static_size (T); | 365 | 31.4k | return this->check_range (base, len); | 366 | 31.4k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 42.2k | { | 358 | 42.2k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 42.2k | else | 364 | 42.2k | len = len * hb_static_size (T); | 365 | 42.2k | return this->check_range (base, len); | 366 | 42.2k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.51k | { | 358 | 4.51k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 4.51k | else | 364 | 4.51k | len = len * hb_static_size (T); | 365 | 4.51k | return this->check_range (base, len); | 366 | 4.51k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 2.69k | { | 358 | 2.69k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 2.69k | else | 364 | 2.69k | len = len * hb_static_size (T); | 365 | 2.69k | return this->check_range (base, len); | 366 | 2.69k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 5.71k | { | 358 | 5.71k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 5.71k | else | 364 | 5.71k | len = len * hb_static_size (T); | 365 | 5.71k | return this->check_range (base, len); | 366 | 5.71k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 30.2k | { | 358 | 30.2k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 30.2k | else | 364 | 30.2k | len = len * hb_static_size (T); | 365 | 30.2k | return this->check_range (base, len); | 366 | 30.2k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 58.8k | { | 358 | 58.8k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 58.8k | else | 364 | 58.8k | len = len * hb_static_size (T); | 365 | 58.8k | return this->check_range (base, len); | 366 | 58.8k | } |
bool hb_sanitize_context_t::check_array_sized<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.20M | { | 358 | 1.20M | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.20M | else | 364 | 1.20M | len = len * hb_static_size (T); | 365 | 1.20M | return this->check_range (base, len); | 366 | 1.20M | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 199k | { | 358 | 199k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 199k | else | 364 | 199k | len = len * hb_static_size (T); | 365 | 199k | return this->check_range (base, len); | 366 | 199k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.87k | { | 358 | 4.87k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 4.87k | else | 364 | 4.87k | len = len * hb_static_size (T); | 365 | 4.87k | return this->check_range (base, len); | 366 | 4.87k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.63k | { | 358 | 3.63k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 3.63k | else | 364 | 3.63k | len = len * hb_static_size (T); | 365 | 3.63k | return this->check_range (base, len); | 366 | 3.63k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 9.41k | { | 358 | 9.41k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 9.41k | else | 364 | 9.41k | len = len * hb_static_size (T); | 365 | 9.41k | return this->check_range (base, len); | 366 | 9.41k | } |
bool hb_sanitize_context_t::check_array_sized<OT::FeatureVariationRecord>(OT::FeatureVariationRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.69k | { | 358 | 1.69k | if (len_size >= 4) | 359 | 1.69k | { | 360 | 1.69k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 27 | return false; | 362 | 1.69k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 1.66k | return this->check_range (base, len); | 366 | 1.69k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 2.57k | { | 358 | 2.57k | if (len_size >= 4) | 359 | 872 | { | 360 | 872 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 9 | return false; | 362 | 872 | } | 363 | 1.70k | else | 364 | 1.70k | len = len * hb_static_size (T); | 365 | 2.56k | return this->check_range (base, len); | 366 | 2.57k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 38.2k | { | 358 | 38.2k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 38.2k | else | 364 | 38.2k | len = len * hb_static_size (T); | 365 | 38.2k | return this->check_range (base, len); | 366 | 38.2k | } |
bool hb_sanitize_context_t::check_array_sized<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 873 | { | 358 | 873 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 873 | else | 364 | 873 | len = len * hb_static_size (T); | 365 | 873 | return this->check_range (base, len); | 366 | 873 | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 246 | { | 358 | 246 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 246 | else | 364 | 246 | len = len * hb_static_size (T); | 365 | 246 | return this->check_range (base, len); | 366 | 246 | } |
bool hb_sanitize_context_t::check_array_sized<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 105 | { | 358 | 105 | if (len_size >= 4) | 359 | 105 | { | 360 | 105 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 8 | return false; | 362 | 105 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 97 | return this->check_range (base, len); | 366 | 105 | } |
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 13.7k | { | 358 | 13.7k | if (len_size >= 4) | 359 | 2.58k | { | 360 | 2.58k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 2.58k | } | 363 | 11.1k | else | 364 | 11.1k | len = len * hb_static_size (T); | 365 | 13.7k | return this->check_range (base, len); | 366 | 13.7k | } |
bool hb_sanitize_context_t::check_array_sized<AAT::KernPair>(AAT::KernPair const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.19k | { | 358 | 1.19k | if (len_size >= 4) | 359 | 1.19k | { | 360 | 1.19k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 1 | return false; | 362 | 1.19k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 1.19k | return this->check_range (base, len); | 366 | 1.19k | } |
bool hb_sanitize_context_t::check_array_sized<AAT::Anchor>(AAT::Anchor const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.17k | { | 358 | 4.17k | if (len_size >= 4) | 359 | 4.17k | { | 360 | 4.17k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 9 | return false; | 362 | 4.17k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 4.16k | return this->check_range (base, len); | 366 | 4.17k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.92k | { | 358 | 3.92k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 3.92k | else | 364 | 3.92k | len = len * hb_static_size (T); | 365 | 3.92k | return this->check_range (base, len); | 366 | 3.92k | } |
bool hb_sanitize_context_t::check_array_sized<OT::SparseVarRegionAxis>(OT::SparseVarRegionAxis const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 22.7k | { | 358 | 22.7k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 22.7k | else | 364 | 22.7k | len = len * hb_static_size (T); | 365 | 22.7k | return this->check_range (base, len); | 366 | 22.7k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.32k | { | 358 | 4.32k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 4.32k | else | 364 | 4.32k | len = len * hb_static_size (T); | 365 | 4.32k | return this->check_range (base, len); | 366 | 4.32k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::EntryExitRecord>(OT::Layout::GPOS_impl::EntryExitRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 13.3k | { | 358 | 13.3k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 13.3k | else | 364 | 13.3k | len = len * hb_static_size (T); | 365 | 13.3k | return this->check_range (base, len); | 366 | 13.3k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 32.6k | { | 358 | 32.6k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 32.6k | else | 364 | 32.6k | len = len * hb_static_size (T); | 365 | 32.6k | return this->check_range (base, len); | 366 | 32.6k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 99.4k | { | 358 | 99.4k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 99.4k | else | 364 | 99.4k | len = len * hb_static_size (T); | 365 | 99.4k | return this->check_range (base, len); | 366 | 99.4k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 16.3k | { | 358 | 16.3k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 16.3k | else | 364 | 16.3k | len = len * hb_static_size (T); | 365 | 16.3k | return this->check_range (base, len); | 366 | 16.3k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 6.92k | { | 358 | 6.92k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 6.92k | else | 364 | 6.92k | len = len * hb_static_size (T); | 365 | 6.92k | return this->check_range (base, len); | 366 | 6.92k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 8.50k | { | 358 | 8.50k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 8.50k | else | 364 | 8.50k | len = len * hb_static_size (T); | 365 | 8.50k | return this->check_range (base, len); | 366 | 8.50k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 21.2k | { | 358 | 21.2k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 21.2k | else | 364 | 21.2k | len = len * hb_static_size (T); | 365 | 21.2k | return this->check_range (base, len); | 366 | 21.2k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 272 | { | 358 | 272 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 272 | else | 364 | 272 | len = len * hb_static_size (T); | 365 | 272 | return this->check_range (base, len); | 366 | 272 | } |
bool hb_sanitize_context_t::check_array_sized<OT::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 3.68k | { | 358 | 3.68k | if (len_size >= 4) | 359 | 3.68k | { | 360 | 3.68k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 14 | return false; | 362 | 3.68k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 3.67k | return this->check_range (base, len); | 366 | 3.68k | } |
bool hb_sanitize_context_t::check_array_sized<OT::UVSMapping>(OT::UVSMapping const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.54k | { | 358 | 4.54k | if (len_size >= 4) | 359 | 4.54k | { | 360 | 4.54k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 18 | return false; | 362 | 4.54k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 4.52k | return this->check_range (base, len); | 366 | 4.54k | } |
bool hb_sanitize_context_t::check_array_sized<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 2.69k | { | 358 | 2.69k | if (len_size >= 4) | 359 | 2.69k | { | 360 | 2.69k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 14 | return false; | 362 | 2.69k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 2.68k | return this->check_range (base, len); | 366 | 2.69k | } |
bool hb_sanitize_context_t::check_array_sized<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 12.6k | { | 358 | 12.6k | if (len_size >= 4) | 359 | 12.6k | { | 360 | 12.6k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 53 | return false; | 362 | 12.6k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 12.6k | return this->check_range (base, len); | 366 | 12.6k | } |
bool hb_sanitize_context_t::check_array_sized<OT::EncodingRecord>(OT::EncodingRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 48.3k | { | 358 | 48.3k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 48.3k | else | 364 | 48.3k | len = len * hb_static_size (T); | 365 | 48.3k | return this->check_range (base, len); | 366 | 48.3k | } |
bool hb_sanitize_context_t::check_array_sized<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 292k | { | 358 | 292k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 292k | else | 364 | 292k | len = len * hb_static_size (T); | 365 | 292k | return this->check_range (base, len); | 366 | 292k | } |
bool hb_sanitize_context_t::check_array_sized<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 405k | { | 358 | 405k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 405k | else | 364 | 405k | len = len * hb_static_size (T); | 365 | 405k | return this->check_range (base, len); | 366 | 405k | } |
bool hb_sanitize_context_t::check_array_sized<OT::ClipRecord>(OT::ClipRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 6.62k | { | 358 | 6.62k | if (len_size >= 4) | 359 | 6.62k | { | 360 | 6.62k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 24 | return false; | 362 | 6.62k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 6.60k | return this->check_range (base, len); | 366 | 6.62k | } |
bool hb_sanitize_context_t::check_array_sized<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 12.9k | { | 358 | 12.9k | if (len_size >= 4) | 359 | 12.9k | { | 360 | 12.9k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 13 | return false; | 362 | 12.9k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 12.8k | return this->check_range (base, len); | 366 | 12.9k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 5.75k | { | 358 | 5.75k | if (len_size >= 4) | 359 | 5.75k | { | 360 | 5.75k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 17 | return false; | 362 | 5.75k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 5.74k | return this->check_range (base, len); | 366 | 5.75k | } |
bool hb_sanitize_context_t::check_array_sized<OT::TableRecord>(OT::TableRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 96.5k | { | 358 | 96.5k | if (len_size >= 4) | 359 | 96.5k | { | 360 | 96.5k | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 96.5k | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 96.5k | return this->check_range (base, len); | 366 | 96.5k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 578 | { | 358 | 578 | if (len_size >= 4) | 359 | 578 | { | 360 | 578 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 15 | return false; | 362 | 578 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 563 | return this->check_range (base, len); | 366 | 578 | } |
bool hb_sanitize_context_t::check_array_sized<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 513 | { | 358 | 513 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 513 | else | 364 | 513 | len = len * hb_static_size (T); | 365 | 513 | return this->check_range (base, len); | 366 | 513 | } |
bool hb_sanitize_context_t::check_array_sized<OT::AxisValueMap>(OT::AxisValueMap const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 17.0k | { | 358 | 17.0k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 17.0k | else | 364 | 17.0k | len = len * hb_static_size (T); | 365 | 17.0k | return this->check_range (base, len); | 366 | 17.0k | } |
bool hb_sanitize_context_t::check_array_sized<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.01k | { | 358 | 1.01k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.01k | else | 364 | 1.01k | len = len * hb_static_size (T); | 365 | 1.01k | return this->check_range (base, len); | 366 | 1.01k | } |
bool hb_sanitize_context_t::check_array_sized<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 584 | { | 358 | 584 | if (len_size >= 4) | 359 | 584 | { | 360 | 584 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 4 | return false; | 362 | 584 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 580 | return this->check_range (base, len); | 366 | 584 | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 709 | { | 358 | 709 | if (len_size >= 4) | 359 | 709 | { | 360 | 709 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 19 | return false; | 362 | 709 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 690 | return this->check_range (base, len); | 366 | 709 | } |
bool hb_sanitize_context_t::check_array_sized<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.31k | { | 358 | 1.31k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.31k | else | 364 | 1.31k | len = len * hb_static_size (T); | 365 | 1.31k | return this->check_range (base, len); | 366 | 1.31k | } |
bool hb_sanitize_context_t::check_array_sized<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 656 | { | 358 | 656 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 656 | else | 364 | 656 | len = len * hb_static_size (T); | 365 | 656 | return this->check_range (base, len); | 366 | 656 | } |
bool hb_sanitize_context_t::check_array_sized<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 621 | { | 358 | 621 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 621 | else | 364 | 621 | len = len * hb_static_size (T); | 365 | 621 | return this->check_range (base, len); | 366 | 621 | } |
bool hb_sanitize_context_t::check_array_sized<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 170 | { | 358 | 170 | if (len_size >= 4) | 359 | 170 | { | 360 | 170 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 6 | return false; | 362 | 170 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 164 | return this->check_range (base, len); | 366 | 170 | } |
bool hb_sanitize_context_t::check_array_sized<OT::DataMap>(OT::DataMap const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 36 | { | 358 | 36 | if (len_size >= 4) | 359 | 36 | { | 360 | 36 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 1 | return false; | 362 | 36 | } | 363 | 0 | else | 364 | 0 | len = len * hb_static_size (T); | 365 | 35 | return this->check_range (base, len); | 366 | 36 | } |
bool hb_sanitize_context_t::check_array_sized<OT::VertOriginMetric>(OT::VertOriginMetric const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 501 | { | 358 | 501 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 501 | else | 364 | 501 | len = len * hb_static_size (T); | 365 | 501 | return this->check_range (base, len); | 366 | 501 | } |
bool hb_sanitize_context_t::check_array_sized<OT::Tag>(OT::Tag const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.05k | { | 358 | 1.05k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.05k | else | 364 | 1.05k | len = len * hb_static_size (T); | 365 | 1.05k | return this->check_range (base, len); | 366 | 1.05k | } |
bool hb_sanitize_context_t::check_array_sized<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.36k | { | 358 | 1.36k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.36k | else | 364 | 1.36k | len = len * hb_static_size (T); | 365 | 1.36k | return this->check_range (base, len); | 366 | 1.36k | } |
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 4.70k | { | 358 | 4.70k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 4.70k | else | 364 | 4.70k | len = len * hb_static_size (T); | 365 | 4.70k | return this->check_range (base, len); | 366 | 4.70k | } |
bool hb_sanitize_context_t::check_array_sized<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 5.46k | { | 358 | 5.46k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 5.46k | else | 364 | 5.46k | len = len * hb_static_size (T); | 365 | 5.46k | return this->check_range (base, len); | 366 | 5.46k | } |
bool hb_sanitize_context_t::check_array_sized<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 7.58k | { | 358 | 7.58k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 7.58k | else | 364 | 7.58k | len = len * hb_static_size (T); | 365 | 7.58k | return this->check_range (base, len); | 366 | 7.58k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*, unsigned int, unsigned int) const Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*, unsigned int, unsigned int) const bool hb_sanitize_context_t::check_array_sized<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 1.59k | { | 358 | 1.59k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 1.59k | else | 364 | 1.59k | len = len * hb_static_size (T); | 365 | 1.59k | return this->check_range (base, len); | 366 | 1.59k | } |
bool hb_sanitize_context_t::check_array_sized<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 662 | { | 358 | 662 | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 662 | else | 364 | 662 | len = len * hb_static_size (T); | 365 | 662 | return this->check_range (base, len); | 366 | 662 | } |
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 16.4k | { | 358 | 16.4k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 16.4k | else | 364 | 16.4k | len = len * hb_static_size (T); | 365 | 16.4k | return this->check_range (base, len); | 366 | 16.4k | } |
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int, unsigned int) const Line | Count | Source | 357 | 24.2k | { | 358 | 24.2k | if (len_size >= 4) | 359 | 0 | { | 360 | 0 | if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len))) | 361 | 0 | return false; | 362 | 0 | } | 363 | 24.2k | else | 364 | 24.2k | len = len * hb_static_size (T); | 365 | 24.2k | return this->check_range (base, len); | 366 | 24.2k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::GaspRange>(OT::GaspRange const*, unsigned int, unsigned int) const |
367 | | |
368 | | template <typename T> |
369 | | bool check_array (const T *base, unsigned int len) const |
370 | 18.9M | { |
371 | 18.9M | return this->check_range (base, len, hb_static_size (T)); |
372 | 18.9M | } bool hb_sanitize_context_t::check_array<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int) const Line | Count | Source | 370 | 19.3k | { | 371 | 19.3k | return this->check_range (base, len, hb_static_size (T)); | 372 | 19.3k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const Line | Count | Source | 370 | 5.79k | { | 371 | 5.79k | return this->check_range (base, len, hb_static_size (T)); | 372 | 5.79k | } |
bool hb_sanitize_context_t::check_array<OT::LookupRecord>(OT::LookupRecord const*, unsigned int) const Line | Count | Source | 370 | 5.72k | { | 371 | 5.72k | return this->check_range (base, len, hb_static_size (T)); | 372 | 5.72k | } |
bool hb_sanitize_context_t::check_array<AAT::Feature>(AAT::Feature const*, unsigned int) const Line | Count | Source | 370 | 5.61k | { | 371 | 5.61k | return this->check_range (base, len, hb_static_size (T)); | 372 | 5.61k | } |
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int) const Line | Count | Source | 370 | 3.05M | { | 371 | 3.05M | return this->check_range (base, len, hb_static_size (T)); | 372 | 3.05M | } |
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int) const Line | Count | Source | 370 | 329k | { | 371 | 329k | return this->check_range (base, len, hb_static_size (T)); | 372 | 329k | } |
bool hb_sanitize_context_t::check_array<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int) const Line | Count | Source | 370 | 6.02k | { | 371 | 6.02k | return this->check_range (base, len, hb_static_size (T)); | 372 | 6.02k | } |
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 | 370 | 841 | { | 371 | 841 | return this->check_range (base, len, hb_static_size (T)); | 372 | 841 | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int) const Line | Count | Source | 370 | 455 | { | 371 | 455 | return this->check_range (base, len, hb_static_size (T)); | 372 | 455 | } |
bool hb_sanitize_context_t::check_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int) const Line | Count | Source | 370 | 13.3M | { | 371 | 13.3M | return this->check_range (base, len, hb_static_size (T)); | 372 | 13.3M | } |
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 | 370 | 567 | { | 371 | 567 | return this->check_range (base, len, hb_static_size (T)); | 372 | 567 | } |
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 | 370 | 1.46k | { | 371 | 1.46k | return this->check_range (base, len, hb_static_size (T)); | 372 | 1.46k | } |
bool hb_sanitize_context_t::check_array<OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > >(OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > const*, unsigned int) const Line | Count | Source | 370 | 4.77k | { | 371 | 4.77k | return this->check_range (base, len, hb_static_size (T)); | 372 | 4.77k | } |
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 | 370 | 5.43k | { | 371 | 5.43k | return this->check_range (base, len, hb_static_size (T)); | 372 | 5.43k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const Line | Count | Source | 370 | 4.40k | { | 371 | 4.40k | return this->check_range (base, len, hb_static_size (T)); | 372 | 4.40k | } |
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 | 370 | 2.39k | { | 371 | 2.39k | return this->check_range (base, len, hb_static_size (T)); | 372 | 2.39k | } |
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 | 370 | 422 | { | 371 | 422 | return this->check_range (base, len, hb_static_size (T)); | 372 | 422 | } |
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 | 370 | 734 | { | 371 | 734 | return this->check_range (base, len, hb_static_size (T)); | 372 | 734 | } |
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int) const Line | Count | Source | 370 | 8.54k | { | 371 | 8.54k | return this->check_range (base, len, hb_static_size (T)); | 372 | 8.54k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const Line | Count | Source | 370 | 1.65k | { | 371 | 1.65k | return this->check_range (base, len, hb_static_size (T)); | 372 | 1.65k | } |
bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int) const Line | Count | Source | 370 | 1.23M | { | 371 | 1.23M | return this->check_range (base, len, hb_static_size (T)); | 372 | 1.23M | } |
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int) const Line | Count | Source | 370 | 91 | { | 371 | 91 | return this->check_range (base, len, hb_static_size (T)); | 372 | 91 | } |
bool hb_sanitize_context_t::check_array<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int) const Line | Count | Source | 370 | 66 | { | 371 | 66 | return this->check_range (base, len, hb_static_size (T)); | 372 | 66 | } |
bool hb_sanitize_context_t::check_array<AAT::FeatureName>(AAT::FeatureName const*, unsigned int) const Line | Count | Source | 370 | 35 | { | 371 | 35 | return this->check_range (base, len, hb_static_size (T)); | 372 | 35 | } |
bool hb_sanitize_context_t::check_array<AAT::SettingName>(AAT::SettingName const*, unsigned int) const Line | Count | Source | 370 | 595 | { | 371 | 595 | return this->check_range (base, len, hb_static_size (T)); | 372 | 595 | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*, unsigned int) const Line | Count | Source | 370 | 235k | { | 371 | 235k | return this->check_range (base, len, hb_static_size (T)); | 372 | 235k | } |
bool hb_sanitize_context_t::check_array<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int) const Line | Count | Source | 370 | 3.80k | { | 371 | 3.80k | return this->check_range (base, len, hb_static_size (T)); | 372 | 3.80k | } |
bool hb_sanitize_context_t::check_array<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int) const Line | Count | Source | 370 | 4.76k | { | 371 | 4.76k | return this->check_range (base, len, hb_static_size (T)); | 372 | 4.76k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const Line | Count | Source | 370 | 4.52k | { | 371 | 4.52k | return this->check_range (base, len, hb_static_size (T)); | 372 | 4.52k | } |
bool hb_sanitize_context_t::check_array<OT::Index>(OT::Index const*, unsigned int) const Line | Count | Source | 370 | 516 | { | 371 | 516 | return this->check_range (base, len, hb_static_size (T)); | 372 | 516 | } |
bool hb_sanitize_context_t::check_array<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int) const Line | Count | Source | 370 | 20.0k | { | 371 | 20.0k | return this->check_range (base, len, hb_static_size (T)); | 372 | 20.0k | } |
bool hb_sanitize_context_t::check_array<OT::LayerRecord>(OT::LayerRecord const*, unsigned int) const Line | Count | Source | 370 | 19.5k | { | 371 | 19.5k | return this->check_range (base, len, hb_static_size (T)); | 372 | 19.5k | } |
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >(OT::HBFixed<OT::NumType<true, short, 2u>, 14u> const*, unsigned int) const Line | Count | Source | 370 | 9.68k | { | 371 | 9.68k | return this->check_range (base, len, hb_static_size (T)); | 372 | 9.68k | } |
bool hb_sanitize_context_t::check_array<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int) const Line | Count | Source | 370 | 476k | { | 371 | 476k | return this->check_range (base, len, hb_static_size (T)); | 372 | 476k | } |
bool hb_sanitize_context_t::check_array<OT::AxisRecord>(OT::AxisRecord const*, unsigned int) const Line | Count | Source | 370 | 15.2k | { | 371 | 15.2k | return this->check_range (base, len, hb_static_size (T)); | 372 | 15.2k | } |
bool hb_sanitize_context_t::check_array<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int) const Line | Count | Source | 370 | 1.06k | { | 371 | 1.06k | return this->check_range (base, len, hb_static_size (T)); | 372 | 1.06k | } |
bool hb_sanitize_context_t::check_array<OT::Offset<OT::NumType<true, unsigned int, 4u>, true> >(OT::Offset<OT::NumType<true, unsigned int, 4u>, true> const*, unsigned int) const Line | Count | Source | 370 | 353 | { | 371 | 353 | return this->check_range (base, len, hb_static_size (T)); | 372 | 353 | } |
bool hb_sanitize_context_t::check_array<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int) const Line | Count | Source | 370 | 308 | { | 371 | 308 | return this->check_range (base, len, hb_static_size (T)); | 372 | 308 | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int) const Line | Count | Source | 370 | 1.75k | { | 371 | 1.75k | return this->check_range (base, len, hb_static_size (T)); | 372 | 1.75k | } |
bool hb_sanitize_context_t::check_array<unsigned char>(unsigned char const*, unsigned int) const Line | Count | Source | 370 | 76.6k | { | 371 | 76.6k | return this->check_range (base, len, hb_static_size (T)); | 372 | 76.6k | } |
bool hb_sanitize_context_t::check_array<OT::NameRecord>(OT::NameRecord const*, unsigned int) const Line | Count | Source | 370 | 7.23k | { | 371 | 7.23k | return this->check_range (base, len, hb_static_size (T)); | 372 | 7.23k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const bool hb_sanitize_context_t::check_array<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int) const Line | Count | Source | 370 | 30.0k | { | 371 | 30.0k | return this->check_range (base, len, hb_static_size (T)); | 372 | 30.0k | } |
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const Line | Count | Source | 370 | 907 | { | 371 | 907 | return this->check_range (base, len, hb_static_size (T)); | 372 | 907 | } |
|
373 | | |
374 | | template <typename T> |
375 | | bool check_array (const T *base, |
376 | | unsigned int a, |
377 | | unsigned int b) const |
378 | 8.10M | { |
379 | 8.10M | return this->check_range (base, hb_static_size (T), a, b); |
380 | 8.10M | } bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const Line | Count | Source | 378 | 8.02M | { | 379 | 8.02M | return this->check_range (base, hb_static_size (T), a, b); | 380 | 8.02M | } |
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const Line | Count | Source | 378 | 84.2k | { | 379 | 84.2k | return this->check_range (base, hb_static_size (T), a, b); | 380 | 84.2k | } |
|
381 | | |
382 | | bool check_start_recursion (int max_depth) |
383 | 5.15M | { |
384 | 5.15M | if (unlikely (recursion_depth >= max_depth)) return false; |
385 | 5.15M | return ++recursion_depth; |
386 | 5.15M | } |
387 | | |
388 | | bool end_recursion (bool result) |
389 | 5.15M | { |
390 | 5.15M | recursion_depth--; |
391 | 5.15M | return result; |
392 | 5.15M | } |
393 | | |
394 | | template <typename Type> |
395 | | #ifndef HB_OPTIMIZE_SIZE |
396 | | HB_ALWAYS_INLINE |
397 | | #endif |
398 | | bool check_struct (const Type *obj) const |
399 | 918M | { |
400 | 918M | if (sizeof (uintptr_t) == sizeof (uint32_t)) |
401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); |
402 | 918M | else |
403 | 918M | return likely (this->check_point ((const char *) obj + obj->min_size)); |
404 | 918M | } bool hb_sanitize_context_t::check_struct<OT::FixedVersion<OT::NumType<true, unsigned short, 2u> > >(OT::FixedVersion<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 139k | { | 400 | 139k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 139k | else | 403 | 139k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 139k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 120k | { | 400 | 120k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 120k | else | 403 | 120k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 120k | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*) const Line | Count | Source | 399 | 243M | { | 400 | 243M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 243M | else | 403 | 243M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 243M | } |
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::SmallTypes> >(OT::ClassDefFormat1_3<OT::Layout::SmallTypes> const*) const Line | Count | Source | 399 | 15.6k | { | 400 | 15.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 15.6k | else | 403 | 15.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 15.6k | } |
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::MediumTypes> >(OT::ClassDefFormat1_3<OT::Layout::MediumTypes> const*) const Line | Count | Source | 399 | 6.42k | { | 400 | 6.42k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.42k | else | 403 | 6.42k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.42k | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned int, 3u> >(OT::NumType<true, unsigned int, 3u> const*) const Line | Count | Source | 399 | 30.6k | { | 400 | 30.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 30.6k | else | 403 | 30.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 30.6k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 8.10k | { | 400 | 8.10k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 8.10k | else | 403 | 8.10k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 8.10k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 997k | { | 400 | 997k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 997k | else | 403 | 997k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 997k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 176k | { | 400 | 176k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 176k | else | 403 | 176k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 176k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 7.78k | { | 400 | 7.78k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.78k | else | 403 | 7.78k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.78k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 126k | { | 400 | 126k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 126k | else | 403 | 126k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 126k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 129M | { | 400 | 129M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 129M | else | 403 | 129M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 129M | } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat1>(OT::CaretValueFormat1 const*) const Line | Count | Source | 399 | 2.52M | { | 400 | 2.52M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.52M | else | 403 | 2.52M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.52M | } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat2>(OT::CaretValueFormat2 const*) const Line | Count | Source | 399 | 1.32M | { | 400 | 1.32M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.32M | else | 403 | 1.32M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.32M | } |
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat3>(OT::CaretValueFormat3 const*) const Line | Count | Source | 399 | 657k | { | 400 | 657k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 657k | else | 403 | 657k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 657k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 73.5M | { | 400 | 73.5M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 73.5M | else | 403 | 73.5M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 73.5M | } |
bool hb_sanitize_context_t::check_struct<OT::HintingDevice>(OT::HintingDevice const*) const Line | Count | Source | 399 | 3.09M | { | 400 | 3.09M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.09M | else | 403 | 3.09M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.09M | } |
bool hb_sanitize_context_t::check_struct<OT::VariationDevice>(OT::VariationDevice const*) const Line | Count | Source | 399 | 590k | { | 400 | 590k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 590k | else | 403 | 590k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 590k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 5.69k | { | 400 | 5.69k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.69k | else | 403 | 5.69k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.69k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 18.7k | { | 400 | 18.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 18.7k | else | 403 | 18.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 18.7k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 25.6k | { | 400 | 25.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 25.6k | else | 403 | 25.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 25.6k | } |
bool hb_sanitize_context_t::check_struct<OT::ItemVariationStore>(OT::ItemVariationStore const*) const Line | Count | Source | 399 | 22.0k | { | 400 | 22.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 22.0k | else | 403 | 22.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 22.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 20.5k | { | 400 | 20.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 20.5k | else | 403 | 20.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 20.5k | } |
bool hb_sanitize_context_t::check_struct<OT::VarRegionList>(OT::VarRegionList const*) const Line | Count | Source | 399 | 19.8k | { | 400 | 19.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 19.8k | else | 403 | 19.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 19.8k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 146k | { | 400 | 146k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 146k | else | 403 | 146k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 146k | } |
bool hb_sanitize_context_t::check_struct<OT::VarData>(OT::VarData const*) const Line | Count | Source | 399 | 140k | { | 400 | 140k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 140k | else | 403 | 140k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 140k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 47.5k | { | 400 | 47.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 47.5k | else | 403 | 47.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 47.5k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 271 | { | 400 | 271 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 271 | else | 403 | 271 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 271 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 221 | { | 400 | 221 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 221 | else | 403 | 221 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 221 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 176 | { | 400 | 176 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 176 | else | 403 | 176 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 176 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 57.3k | { | 400 | 57.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 57.3k | else | 403 | 57.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 57.3k | } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Script> >(OT::Record<OT::Script> const*) const Line | Count | Source | 399 | 3.34M | { | 400 | 3.34M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.34M | else | 403 | 3.34M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.34M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Script, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Script, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 3.34M | { | 400 | 3.34M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.34M | else | 403 | 3.34M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.34M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LangSys, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LangSys, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 40.6M | { | 400 | 40.6M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.6M | else | 403 | 40.6M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.6M | } |
bool hb_sanitize_context_t::check_struct<OT::LangSys>(OT::LangSys const*) const Line | Count | Source | 399 | 1.83M | { | 400 | 1.83M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.83M | else | 403 | 1.83M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.83M | } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*) const Line | Count | Source | 399 | 40.3M | { | 400 | 40.3M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.3M | else | 403 | 40.3M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.3M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 54.6k | { | 400 | 54.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 54.6k | else | 403 | 54.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 54.6k | } |
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*) const Line | Count | Source | 399 | 577k | { | 400 | 577k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 577k | else | 403 | 577k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 577k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 577k | { | 400 | 577k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 577k | else | 403 | 577k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 577k | } |
bool hb_sanitize_context_t::check_struct<OT::Feature>(OT::Feature const*) const Line | Count | Source | 399 | 232k | { | 400 | 232k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 232k | else | 403 | 232k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 232k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureParams, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::FeatureParams, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 231k | { | 400 | 231k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 231k | else | 403 | 231k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 231k | } |
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsSize>(OT::FeatureParamsSize const*) const Line | Count | Source | 399 | 700 | { | 400 | 700 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 700 | else | 403 | 700 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 700 | } |
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsStylisticSet>(OT::FeatureParamsStylisticSet const*) const Line | Count | Source | 399 | 4.76k | { | 400 | 4.76k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.76k | else | 403 | 4.76k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.76k | } |
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsCharacterVariants>(OT::FeatureParamsCharacterVariants const*) const Line | Count | Source | 399 | 837 | { | 400 | 837 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 837 | else | 403 | 837 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 837 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 32.0k | { | 400 | 32.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 32.0k | else | 403 | 32.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 32.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 234k | { | 400 | 234k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 234k | else | 403 | 234k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 234k | } |
bool hb_sanitize_context_t::check_struct<OT::Lookup>(OT::Lookup const*) const Line | Count | Source | 399 | 309k | { | 400 | 309k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 309k | else | 403 | 309k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 309k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 13.9M | { | 400 | 13.9M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.9M | else | 403 | 13.9M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.9M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::SmallTypes> >(OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::SmallTypes> const*) const Line | Count | Source | 399 | 33.4k | { | 400 | 33.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 33.4k | else | 403 | 33.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 33.4k | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> const*) const Line | Count | Source | 399 | 1.82k | { | 400 | 1.82k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.82k | else | 403 | 1.82k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.82k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 93.8k | { | 400 | 93.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 93.8k | else | 403 | 93.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 93.8k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 288k | { | 400 | 288k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 288k | else | 403 | 288k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 288k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 5.18k | { | 400 | 5.18k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.18k | else | 403 | 5.18k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.18k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 219k | { | 400 | 219k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 219k | else | 403 | 219k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 219k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 8.99k | { | 400 | 8.99k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 8.99k | else | 403 | 8.99k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 8.99k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 112k | { | 400 | 112k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 112k | else | 403 | 112k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 112k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 13.0M | { | 400 | 13.0M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.0M | else | 403 | 13.0M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.0M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 9.78k | { | 400 | 9.78k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.78k | else | 403 | 9.78k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.78k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 33.3k | { | 400 | 33.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 33.3k | else | 403 | 33.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 33.3k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 66.6k | { | 400 | 66.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 66.6k | else | 403 | 66.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 66.6k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.59M | { | 400 | 1.59M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.59M | else | 403 | 1.59M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.59M | } |
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::SmallTypes> >(OT::Rule<OT::Layout::SmallTypes> const*) const Line | Count | Source | 399 | 350k | { | 400 | 350k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 350k | else | 403 | 350k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 350k | } |
bool hb_sanitize_context_t::check_struct<OT::ContextFormat3>(OT::ContextFormat3 const*) const Line | Count | Source | 399 | 5.81k | { | 400 | 5.81k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.81k | else | 403 | 5.81k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.81k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 4.49k | { | 400 | 4.49k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.49k | else | 403 | 4.49k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.49k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 39.4k | { | 400 | 39.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 39.4k | else | 403 | 39.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 39.4k | } |
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::MediumTypes> >(OT::Rule<OT::Layout::MediumTypes> const*) const Line | Count | Source | 399 | 13.8k | { | 400 | 13.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.8k | else | 403 | 13.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.8k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 3.42k | { | 400 | 3.42k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.42k | else | 403 | 3.42k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.42k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 831k | { | 400 | 831k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 831k | else | 403 | 831k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 831k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 25.4M | { | 400 | 25.4M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 25.4M | else | 403 | 25.4M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 25.4M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 6.06k | { | 400 | 6.06k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.06k | else | 403 | 6.06k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.06k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 42.5k | { | 400 | 42.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 42.5k | else | 403 | 42.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 42.5k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 7.75k | { | 400 | 7.75k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.75k | else | 403 | 7.75k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.75k | } |
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 | 399 | 22.2k | { | 400 | 22.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 22.2k | else | 403 | 22.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 22.2k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureVariations, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::FeatureVariations, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 2.73k | { | 400 | 2.73k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.73k | else | 403 | 2.73k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.73k | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*) const Line | Count | Source | 399 | 5.80M | { | 400 | 5.80M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.80M | else | 403 | 5.80M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.80M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionSet, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ConditionSet, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 3.00k | { | 400 | 3.00k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.00k | else | 403 | 3.00k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.00k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 7.88k | { | 400 | 7.88k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.88k | else | 403 | 7.88k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.88k | } |
bool hb_sanitize_context_t::check_struct<OT::ConditionAxisRange>(OT::ConditionAxisRange const*) const Line | Count | Source | 399 | 7.95k | { | 400 | 7.95k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.95k | else | 403 | 7.95k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.95k | } |
bool hb_sanitize_context_t::check_struct<OT::ConditionValue>(OT::ConditionValue const*) const Line | Count | Source | 399 | 3.03k | { | 400 | 3.03k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.03k | else | 403 | 3.03k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.03k | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*) const Line | Count | Source | 399 | 5.36M | { | 400 | 5.36M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.36M | else | 403 | 5.36M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.36M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 138k | { | 400 | 138k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 138k | else | 403 | 138k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 138k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureTableSubstitution, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::FeatureTableSubstitution, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 2.48k | { | 400 | 2.48k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.48k | else | 403 | 2.48k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.48k | } |
bool hb_sanitize_context_t::check_struct<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*) const Line | Count | Source | 399 | 2.46k | { | 400 | 2.46k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.46k | else | 403 | 2.46k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.46k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 2.46k | { | 400 | 2.46k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.46k | else | 403 | 2.46k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.46k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 1.52k | { | 400 | 1.52k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.52k | else | 403 | 1.52k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.52k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 1.29k | { | 400 | 1.29k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.29k | else | 403 | 1.29k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.29k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 478 | { | 400 | 478 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 478 | else | 403 | 478 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 478 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 1.68k | { | 400 | 1.68k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.68k | else | 403 | 1.68k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.68k | } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, void> >(AAT::StateTable<AAT::ExtendedTypes, void> const*) const Line | Count | Source | 399 | 479 | { | 400 | 479 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 479 | else | 403 | 479 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 479 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 4.26k | { | 400 | 4.26k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.26k | else | 403 | 4.26k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.26k | } |
bool hb_sanitize_context_t::check_struct<OT::VarSizedBinSearchHeader>(OT::VarSizedBinSearchHeader const*) const Line | Count | Source | 399 | 3.10k | { | 400 | 3.10k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.10k | else | 403 | 3.10k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.10k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 3.37k | { | 400 | 3.37k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.37k | else | 403 | 3.37k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.37k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 3.36k | { | 400 | 3.36k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.36k | else | 403 | 3.36k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.36k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 715 | { | 400 | 715 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 715 | else | 403 | 715 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 715 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 203 | { | 400 | 203 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 203 | else | 403 | 203 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 203 | } |
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 | 399 | 533 | { | 400 | 533 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 533 | else | 403 | 533 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 533 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 455 | { | 400 | 455 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 455 | else | 403 | 455 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 455 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 2.80k | { | 400 | 2.80k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.80k | else | 403 | 2.80k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.80k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::HBGlyphID16> >(AAT::LookupSegmentArray<OT::HBGlyphID16> const*) const Line | Count | Source | 399 | 1.27k | { | 400 | 1.27k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.27k | else | 403 | 1.27k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.27k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 1.27k | { | 400 | 1.27k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.27k | else | 403 | 1.27k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.27k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::HBGlyphID16> >(AAT::LookupFormat8<OT::HBGlyphID16> const*) const Line | Count | Source | 399 | 264 | { | 400 | 264 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 264 | else | 403 | 264 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 264 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::HBGlyphID16> >(AAT::LookupFormat10<OT::HBGlyphID16> const*) const Line | Count | Source | 399 | 75 | { | 400 | 75 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 75 | else | 403 | 75 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 75 | } |
bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ExtendedTypes> >(AAT::LigatureSubtable<AAT::ExtendedTypes> const*) const Line | Count | Source | 399 | 313 | { | 400 | 313 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 313 | else | 403 | 313 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 313 | } |
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 | 399 | 312 | { | 400 | 312 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 312 | else | 403 | 312 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 312 | } |
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ExtendedTypes> >(AAT::InsertionSubtable<AAT::ExtendedTypes> const*) const Line | Count | Source | 399 | 1.22k | { | 400 | 1.22k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.22k | else | 403 | 1.22k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.22k | } |
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 | 399 | 1.22k | { | 400 | 1.22k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.22k | else | 403 | 1.22k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.22k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 2.60k | { | 400 | 2.60k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.60k | else | 403 | 2.60k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.60k | } |
bool hb_sanitize_context_t::check_struct<AAT::ltag>(AAT::ltag const*) const Line | Count | Source | 399 | 109 | { | 400 | 109 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 109 | else | 403 | 109 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 109 | } |
bool hb_sanitize_context_t::check_struct<AAT::FTStringRange>(AAT::FTStringRange const*) const Line | Count | Source | 399 | 24.1k | { | 400 | 24.1k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 24.1k | else | 403 | 24.1k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 24.1k | } |
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, void> >(AAT::StateTable<AAT::ObsoleteTypes, void> const*) const Line | Count | Source | 399 | 4.21k | { | 400 | 4.21k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.21k | else | 403 | 4.21k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.21k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 10.5k | { | 400 | 10.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 10.5k | else | 403 | 10.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 10.5k | } |
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> > >(AAT::ClassTable<OT::NumType<true, unsigned char, 1u> > const*) const Line | Count | Source | 399 | 10.5k | { | 400 | 10.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 10.5k | else | 403 | 10.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 10.5k | } |
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 | 399 | 4.47k | { | 400 | 4.47k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.47k | else | 403 | 4.47k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.47k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 4.40k | { | 400 | 4.40k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.40k | else | 403 | 4.40k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.40k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ObsoleteTypes> >(AAT::LigatureSubtable<AAT::ObsoleteTypes> const*) const Line | Count | Source | 399 | 3.21k | { | 400 | 3.21k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.21k | else | 403 | 3.21k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.21k | } |
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ObsoleteTypes> >(AAT::InsertionSubtable<AAT::ObsoleteTypes> const*) const Line | Count | Source | 399 | 1.89k | { | 400 | 1.89k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.89k | else | 403 | 1.89k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.89k | } |
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 | 399 | 1.89k | { | 400 | 1.89k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.89k | else | 403 | 1.89k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.89k | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableHeader>(AAT::KerxSubTableHeader const*) const Line | Count | Source | 399 | 4.49k | { | 400 | 4.49k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.49k | else | 403 | 4.49k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.49k | } |
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::NumType<true, unsigned int, 4u> > >(OT::BinSearchHeader<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 259 | { | 400 | 259 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 259 | else | 403 | 259 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 259 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 399 | 330 | { | 400 | 330 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 330 | else | 403 | 330 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 330 | } |
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 | 399 | 328 | { | 400 | 328 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 328 | else | 403 | 328 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 328 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 399 | 148 | { | 400 | 148 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 148 | else | 403 | 148 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 148 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 399 | 487 | { | 400 | 487 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 487 | else | 403 | 487 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 487 | } |
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 | 399 | 485 | { | 400 | 485 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 485 | else | 403 | 485 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 485 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> const*) const Line | Count | Source | 399 | 747 | { | 400 | 747 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 747 | else | 403 | 747 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 747 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 790 | { | 400 | 790 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 790 | else | 403 | 790 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 790 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 1.28k | { | 400 | 1.28k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.28k | else | 403 | 1.28k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.28k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 1.27k | { | 400 | 1.27k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.27k | else | 403 | 1.27k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.27k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 21 | { | 400 | 21 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 21 | else | 403 | 21 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 21 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 116 | { | 400 | 116 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 116 | else | 403 | 116 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 116 | } |
bool hb_sanitize_context_t::check_struct<AAT::ankr>(AAT::ankr const*) const Line | Count | Source | 399 | 416 | { | 400 | 416 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 416 | else | 403 | 416 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 416 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 362 | { | 400 | 362 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 362 | else | 403 | 362 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 362 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 4.22k | { | 400 | 4.22k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.22k | else | 403 | 4.22k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.22k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const Line | Count | Source | 399 | 828 | { | 400 | 828 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 828 | else | 403 | 828 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 828 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const Line | Count | Source | 399 | 1.55k | { | 400 | 1.55k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.55k | else | 403 | 1.55k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.55k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 1.54k | { | 400 | 1.54k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.54k | else | 403 | 1.54k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.54k | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const Line | Count | Source | 399 | 830 | { | 400 | 830 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 830 | else | 403 | 830 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 830 | } |
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const Line | Count | Source | 399 | 57 | { | 400 | 57 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 57 | else | 403 | 57 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 57 | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*) const Line | Count | Source | 399 | 1.05M | { | 400 | 1.05M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.05M | else | 403 | 1.05M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.05M | } |
bool hb_sanitize_context_t::check_struct<OT::NumType<true, int, 4u> >(OT::NumType<true, int, 4u> const*) const Line | Count | Source | 399 | 110k | { | 400 | 110k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 110k | else | 403 | 110k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 110k | } |
bool hb_sanitize_context_t::check_struct<AAT::trak>(AAT::trak const*) const Line | Count | Source | 399 | 178 | { | 400 | 178 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 178 | else | 403 | 178 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 178 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 309 | { | 400 | 309 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 309 | else | 403 | 309 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 309 | } |
bool hb_sanitize_context_t::check_struct<AAT::TrackData>(AAT::TrackData const*) const Line | Count | Source | 399 | 95 | { | 400 | 95 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 95 | else | 403 | 95 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 95 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 91 | { | 400 | 91 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 91 | else | 403 | 91 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 91 | } |
bool hb_sanitize_context_t::check_struct<AAT::TrackTableEntry>(AAT::TrackTableEntry const*) const Line | Count | Source | 399 | 50.4k | { | 400 | 50.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 50.4k | else | 403 | 50.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 50.4k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 50.4k | { | 400 | 50.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 50.4k | else | 403 | 50.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 50.4k | } |
bool hb_sanitize_context_t::check_struct<AAT::feat>(AAT::feat const*) const Line | Count | Source | 399 | 42 | { | 400 | 42 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 42 | else | 403 | 42 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 42 | } |
bool hb_sanitize_context_t::check_struct<AAT::FeatureName>(AAT::FeatureName const*) const Line | Count | Source | 399 | 595 | { | 400 | 595 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 595 | else | 403 | 595 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 595 | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LONGDATETIME>(OT::LONGDATETIME 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 Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VarRegionAxis>(OT::VarRegionAxis const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SparseVarRegionAxis>(OT::SparseVarRegionAxis const*) const bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 24.6k | { | 400 | 24.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 24.6k | else | 403 | 24.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 24.6k | } |
bool hb_sanitize_context_t::check_struct<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > >(OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 40.6k | { | 400 | 40.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.6k | else | 403 | 40.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.6k | } |
bool hb_sanitize_context_t::check_struct<OT::MultiItemVariationStore>(OT::MultiItemVariationStore const*) const Line | Count | Source | 399 | 4.86k | { | 400 | 4.86k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.86k | else | 403 | 4.86k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.86k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 4.72k | { | 400 | 4.72k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.72k | else | 403 | 4.72k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.72k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 6.89k | { | 400 | 6.89k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.89k | else | 403 | 6.89k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.89k | } |
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > >(OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 11.9k | { | 400 | 11.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 11.9k | else | 403 | 11.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 11.9k | } |
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned int, 4u> > >(OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 611 | { | 400 | 611 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 611 | else | 403 | 611 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 611 | } |
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::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentSingle<OT::NumType<true, unsigned short, 2u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSingle<OT::NumType<true, 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<AAT::Feature>(AAT::Feature 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::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::JustificationHeader>(AAT::JustificationHeader const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::JustificationCategory, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::JustificationCategory, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::PostcompensationActionChain, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::PostcompensationActionChain, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, 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::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::JustificationHeader, OT::NumType<true, unsigned short, 2u>, void, 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::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::ValueBase, true> >(OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::ValueBase, true> const*) const Line | Count | Source | 399 | 41.0M | { | 400 | 41.0M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 41.0M | else | 403 | 41.0M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 41.0M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1>(OT::Layout::GPOS_impl::SinglePosFormat1 const*) const Line | Count | Source | 399 | 19.7k | { | 400 | 19.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 19.7k | else | 403 | 19.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 19.7k | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat2>(OT::Layout::GPOS_impl::SinglePosFormat2 const*) const Line | Count | Source | 399 | 9.71k | { | 400 | 9.71k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.71k | else | 403 | 9.71k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.71k | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat1>(OT::Layout::GPOS_impl::AnchorFormat1 const*) const Line | Count | Source | 399 | 1.62M | { | 400 | 1.62M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.62M | else | 403 | 1.62M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.62M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat2>(OT::Layout::GPOS_impl::AnchorFormat2 const*) const Line | Count | Source | 399 | 1.28M | { | 400 | 1.28M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.28M | else | 403 | 1.28M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.28M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat3>(OT::Layout::GPOS_impl::AnchorFormat3 const*) const Line | Count | Source | 399 | 530k | { | 400 | 530k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 530k | else | 403 | 530k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 530k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::CursivePosFormat1, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::CursivePosFormat1, true> const*) const Line | Count | Source | 399 | 7.39M | { | 400 | 7.39M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.39M | else | 403 | 7.39M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.39M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix>(OT::Layout::GPOS_impl::AnchorMatrix const*) const Line | Count | Source | 399 | 236k | { | 400 | 236k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 236k | else | 403 | 236k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 236k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*) const Line | Count | Source | 399 | 122M | { | 400 | 122M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 122M | else | 403 | 122M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 122M | } |
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*) const Line | Count | Source | 399 | 9.48M | { | 400 | 9.48M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.48M | else | 403 | 9.48M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.48M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 9.48M | { | 400 | 9.48M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.48M | else | 403 | 9.48M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.48M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 10.1M | { | 400 | 10.1M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 10.1M | else | 403 | 10.1M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 10.1M | } |
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 | 399 | 16.3k | { | 400 | 16.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 16.3k | else | 403 | 16.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 16.3k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 351k | { | 400 | 351k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 351k | else | 403 | 351k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 351k | } |
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 | 399 | 269k | { | 400 | 269k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 269k | else | 403 | 269k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 269k | } |
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 | 399 | 16.2k | { | 400 | 16.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 16.2k | else | 403 | 16.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 16.2k | } |
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 | 399 | 6.95k | { | 400 | 6.95k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.95k | else | 403 | 6.95k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.95k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 3.39k | { | 400 | 3.39k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.39k | else | 403 | 3.39k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.39k | } |
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 | 399 | 1.99k | { | 400 | 1.99k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.99k | else | 403 | 1.99k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.99k | } |
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 | 399 | 6.46k | { | 400 | 6.46k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.46k | else | 403 | 6.46k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.46k | } |
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 | 399 | 18.2k | { | 400 | 18.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 18.2k | else | 403 | 18.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 18.2k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 33.8k | { | 400 | 33.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 33.8k | else | 403 | 33.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 33.8k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 565k | { | 400 | 565k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 565k | else | 403 | 565k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 565k | } |
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 | 399 | 5.30k | { | 400 | 5.30k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.30k | else | 403 | 5.30k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.30k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 11.7k | { | 400 | 11.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 11.7k | else | 403 | 11.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 11.7k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 8.95k | { | 400 | 8.95k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 8.95k | else | 403 | 8.95k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 8.95k | } |
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 | 399 | 9.12k | { | 400 | 9.12k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.12k | else | 403 | 9.12k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.12k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 9.06k | { | 400 | 9.06k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.06k | else | 403 | 9.06k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.06k | } |
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 | 399 | 2.80k | { | 400 | 2.80k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.80k | else | 403 | 2.80k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.80k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 2.71k | { | 400 | 2.71k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.71k | else | 403 | 2.71k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.71k | } |
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 | 399 | 6.63k | { | 400 | 6.63k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.63k | else | 403 | 6.63k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.63k | } |
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 | 399 | 4.12k | { | 400 | 4.12k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.12k | else | 403 | 4.12k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.12k | } |
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 | 399 | 9.62k | { | 400 | 9.62k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.62k | else | 403 | 9.62k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.62k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 21.7k | { | 400 | 21.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 21.7k | else | 403 | 21.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 21.7k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 120k | { | 400 | 120k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 120k | else | 403 | 120k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 120k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 541 | { | 400 | 541 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 541 | else | 403 | 541 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 541 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 4.25k | { | 400 | 4.25k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.25k | else | 403 | 4.25k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.25k | } |
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::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentSingle<OT::NumType<true, unsigned int, 4u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSingle<OT::NumType<true, unsigned int, 4u> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::StatAxisRecord>(OT::StatAxisRecord const*) const bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat1>(OT::AxisValueFormat1 const*) const Line | Count | Source | 399 | 18.3k | { | 400 | 18.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 18.3k | else | 403 | 18.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 18.3k | } |
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat2>(OT::AxisValueFormat2 const*) const Line | Count | Source | 399 | 20.7k | { | 400 | 20.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 20.7k | else | 403 | 20.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 20.7k | } |
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat3>(OT::AxisValueFormat3 const*) const Line | Count | Source | 399 | 5.95k | { | 400 | 5.95k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.95k | else | 403 | 5.95k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.95k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueRecord>(OT::AxisValueRecord const*) const bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat4>(OT::AxisValueFormat4 const*) const Line | Count | Source | 399 | 3.81k | { | 400 | 3.81k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.81k | else | 403 | 3.81k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.81k | } |
bool hb_sanitize_context_t::check_struct<OT::AxisValue>(OT::AxisValue const*) const Line | Count | Source | 399 | 421k | { | 400 | 421k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 421k | else | 403 | 421k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 421k | } |
bool hb_sanitize_context_t::check_struct<OT::STAT>(OT::STAT const*) const Line | Count | Source | 399 | 5.62k | { | 400 | 5.62k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.62k | else | 403 | 5.62k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.62k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 4.76k | { | 400 | 4.76k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.76k | else | 403 | 4.76k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.76k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValueOffsetArray, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::AxisValueOffsetArray, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 4.52k | { | 400 | 4.52k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.52k | else | 403 | 4.52k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.52k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 528k | { | 400 | 528k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 528k | else | 403 | 528k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 528k | } |
bool hb_sanitize_context_t::check_struct<OT::maxp>(OT::maxp const*) const Line | Count | Source | 399 | 56.5k | { | 400 | 56.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 56.5k | else | 403 | 56.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 56.5k | } |
bool hb_sanitize_context_t::check_struct<OT::maxpV1Tail>(OT::maxpV1Tail const*) const Line | Count | Source | 399 | 32.2k | { | 400 | 32.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 32.2k | else | 403 | 32.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 32.2k | } |
bool hb_sanitize_context_t::check_struct<OT::head>(OT::head const*) const Line | Count | Source | 399 | 35.8k | { | 400 | 35.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 35.8k | else | 403 | 35.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 35.8k | } |
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 | 399 | 836 | { | 400 | 836 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 836 | else | 403 | 836 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 836 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 818 | { | 400 | 818 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 818 | else | 403 | 818 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 818 | } |
bool hb_sanitize_context_t::check_struct<OT::OS2V1Tail>(OT::OS2V1Tail const*) const Line | Count | Source | 399 | 6.03k | { | 400 | 6.03k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.03k | else | 403 | 6.03k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.03k | } |
bool hb_sanitize_context_t::check_struct<OT::OS2V2Tail>(OT::OS2V2Tail const*) const Line | Count | Source | 399 | 5.91k | { | 400 | 5.91k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.91k | else | 403 | 5.91k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.91k | } |
bool hb_sanitize_context_t::check_struct<OT::OS2V5Tail>(OT::OS2V5Tail const*) const Line | Count | Source | 399 | 448 | { | 400 | 448 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 448 | else | 403 | 448 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 448 | } |
bool hb_sanitize_context_t::check_struct<OT::OS2>(OT::OS2 const*) const Line | Count | Source | 399 | 7.00k | { | 400 | 7.00k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.00k | else | 403 | 7.00k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.00k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat0>(OT::CmapSubtableFormat0 const*) const Line | Count | Source | 399 | 9.00k | { | 400 | 9.00k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.00k | else | 403 | 9.00k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.00k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat4>(OT::CmapSubtableFormat4 const*) const Line | Count | Source | 399 | 64.5k | { | 400 | 64.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 64.5k | else | 403 | 64.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 64.5k | } |
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 | 399 | 13.9k | { | 400 | 13.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.9k | else | 403 | 13.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.9k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::DefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 13.9k | { | 400 | 13.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.9k | else | 403 | 13.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.9k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NonDefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::NonDefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 13.8k | { | 400 | 13.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.8k | else | 403 | 13.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.8k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14>(OT::CmapSubtableFormat14 const*) const Line | Count | Source | 399 | 2.70k | { | 400 | 2.70k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.70k | else | 403 | 2.70k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.70k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > >(OT::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 1.45k | { | 400 | 1.45k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.45k | else | 403 | 1.45k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.45k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::NumType<true, unsigned int, 4u> > >(OT::CmapSubtableTrimmed<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 689 | { | 400 | 689 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 689 | else | 403 | 689 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 689 | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> const*) const Line | Count | Source | 399 | 10.3k | { | 400 | 10.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 10.3k | else | 403 | 10.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 10.3k | } |
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> const*) const Line | Count | Source | 399 | 2.31k | { | 400 | 2.31k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.31k | else | 403 | 2.31k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.31k | } |
bool hb_sanitize_context_t::check_struct<OT::EncodingRecord>(OT::EncodingRecord const*) const Line | Count | Source | 399 | 107k | { | 400 | 107k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 107k | else | 403 | 107k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 107k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CmapSubtable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::CmapSubtable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 107k | { | 400 | 107k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 107k | else | 403 | 107k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 107k | } |
bool hb_sanitize_context_t::check_struct<OT::cmap>(OT::cmap const*) const Line | Count | Source | 399 | 52.6k | { | 400 | 52.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 52.6k | else | 403 | 52.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 52.6k | } |
bool hb_sanitize_context_t::check_struct<OT::CPALV1Tail>(OT::CPALV1Tail const*) const Line | Count | Source | 399 | 2.42k | { | 400 | 2.42k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.42k | else | 403 | 2.42k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.42k | } |
bool hb_sanitize_context_t::check_struct<OT::CPAL>(OT::CPAL const*) const Line | Count | Source | 399 | 3.70k | { | 400 | 3.70k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.70k | else | 403 | 3.70k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.70k | } |
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 | 399 | 34.0k | { | 400 | 34.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 34.0k | else | 403 | 34.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 34.0k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintColrLayers>(OT::PaintColrLayers const*) const Line | Count | Source | 399 | 166k | { | 400 | 166k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 166k | else | 403 | 166k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 166k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintSolid>(OT::PaintSolid const*) const Line | Count | Source | 399 | 637k | { | 400 | 637k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 637k | else | 403 | 637k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 637k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintGlyph>(OT::PaintGlyph const*) const Line | Count | Source | 399 | 1.35M | { | 400 | 1.35M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.35M | else | 403 | 1.35M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.35M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 3.95M | { | 400 | 3.95M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.95M | else | 403 | 3.95M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.95M | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSolid> >(OT::NoVariable<OT::PaintSolid> const*) const Line | Count | Source | 399 | 607k | { | 400 | 607k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 607k | else | 403 | 607k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 607k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSolid> >(OT::Variable<OT::PaintSolid> const*) const Line | Count | Source | 399 | 29.8k | { | 400 | 29.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 29.8k | else | 403 | 29.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 29.8k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > const*) const Line | Count | Source | 399 | 114k | { | 400 | 114k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 114k | else | 403 | 114k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 114k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::NoVariable> >(OT::PaintLinearGradient<OT::NoVariable> const*) const Line | Count | Source | 399 | 114k | { | 400 | 114k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 114k | else | 403 | 114k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 114k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 302k | { | 400 | 302k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 302k | else | 403 | 302k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 302k | } |
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::NoVariable> >(OT::ColorLine<OT::NoVariable> const*) const Line | Count | Source | 399 | 293k | { | 400 | 293k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 293k | else | 403 | 293k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 293k | } |
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 | 399 | 46.0k | { | 400 | 46.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 46.0k | else | 403 | 46.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 46.0k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::Variable> >(OT::PaintLinearGradient<OT::Variable> const*) const Line | Count | Source | 399 | 46.0k | { | 400 | 46.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 46.0k | else | 403 | 46.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 46.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 409k | { | 400 | 409k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 409k | else | 403 | 409k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 409k | } |
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::Variable> >(OT::ColorLine<OT::Variable> const*) const Line | Count | Source | 399 | 405k | { | 400 | 405k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 405k | else | 403 | 405k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 405k | } |
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 | 399 | 29.9k | { | 400 | 29.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 29.9k | else | 403 | 29.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 29.9k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::NoVariable> >(OT::PaintRadialGradient<OT::NoVariable> const*) const Line | Count | Source | 399 | 29.9k | { | 400 | 29.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 29.9k | else | 403 | 29.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 29.9k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRadialGradient<OT::Variable> > >(OT::Variable<OT::PaintRadialGradient<OT::Variable> > const*) const Line | Count | Source | 399 | 40.5k | { | 400 | 40.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.5k | else | 403 | 40.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.5k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::Variable> >(OT::PaintRadialGradient<OT::Variable> const*) const Line | Count | Source | 399 | 40.5k | { | 400 | 40.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.5k | else | 403 | 40.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.5k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > const*) const Line | Count | Source | 399 | 158k | { | 400 | 158k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 158k | else | 403 | 158k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 158k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::NoVariable> >(OT::PaintSweepGradient<OT::NoVariable> const*) const Line | Count | Source | 399 | 158k | { | 400 | 158k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 158k | else | 403 | 158k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 158k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSweepGradient<OT::Variable> > >(OT::Variable<OT::PaintSweepGradient<OT::Variable> > const*) const Line | Count | Source | 399 | 322k | { | 400 | 322k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 322k | else | 403 | 322k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 322k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::Variable> >(OT::PaintSweepGradient<OT::Variable> const*) const Line | Count | Source | 399 | 322k | { | 400 | 322k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 322k | else | 403 | 322k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 322k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::NoVariable> >(OT::PaintTransform<OT::NoVariable> const*) const Line | Count | Source | 399 | 15.3k | { | 400 | 15.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 15.3k | else | 403 | 15.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 15.3k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 14.8k | { | 400 | 14.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 14.8k | else | 403 | 14.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 14.8k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::Affine2x3> >(OT::NoVariable<OT::Affine2x3> const*) const Line | Count | Source | 399 | 7.40k | { | 400 | 7.40k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.40k | else | 403 | 7.40k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.40k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::Variable> >(OT::PaintTransform<OT::Variable> const*) const Line | Count | Source | 399 | 30.4k | { | 400 | 30.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 30.4k | else | 403 | 30.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 30.4k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 29.7k | { | 400 | 29.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 29.7k | else | 403 | 29.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 29.7k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::Affine2x3> >(OT::Variable<OT::Affine2x3> const*) const Line | Count | Source | 399 | 26.7k | { | 400 | 26.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 26.7k | else | 403 | 26.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 26.7k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintTranslate> >(OT::NoVariable<OT::PaintTranslate> const*) const Line | Count | Source | 399 | 101k | { | 400 | 101k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 101k | else | 403 | 101k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 101k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintTranslate> >(OT::Variable<OT::PaintTranslate> const*) const Line | Count | Source | 399 | 71.4k | { | 400 | 71.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 71.4k | else | 403 | 71.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 71.4k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScale> >(OT::NoVariable<OT::PaintScale> const*) const Line | Count | Source | 399 | 58.0k | { | 400 | 58.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 58.0k | else | 403 | 58.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 58.0k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScale> >(OT::Variable<OT::PaintScale> const*) const Line | Count | Source | 399 | 36.2k | { | 400 | 36.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 36.2k | else | 403 | 36.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 36.2k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleAroundCenter> >(OT::NoVariable<OT::PaintScaleAroundCenter> const*) const Line | Count | Source | 399 | 41.9k | { | 400 | 41.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 41.9k | else | 403 | 41.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 41.9k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleAroundCenter> >(OT::Variable<OT::PaintScaleAroundCenter> const*) const Line | Count | Source | 399 | 111k | { | 400 | 111k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 111k | else | 403 | 111k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 111k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniform> >(OT::NoVariable<OT::PaintScaleUniform> const*) const Line | Count | Source | 399 | 51.8k | { | 400 | 51.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 51.8k | else | 403 | 51.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 51.8k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniform> >(OT::Variable<OT::PaintScaleUniform> const*) const Line | Count | Source | 399 | 113k | { | 400 | 113k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 113k | else | 403 | 113k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 113k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniformAroundCenter> >(OT::NoVariable<OT::PaintScaleUniformAroundCenter> const*) const Line | Count | Source | 399 | 271k | { | 400 | 271k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 271k | else | 403 | 271k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 271k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniformAroundCenter> >(OT::Variable<OT::PaintScaleUniformAroundCenter> const*) const Line | Count | Source | 399 | 20.0k | { | 400 | 20.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 20.0k | else | 403 | 20.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 20.0k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotate> >(OT::NoVariable<OT::PaintRotate> const*) const Line | Count | Source | 399 | 47.7k | { | 400 | 47.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 47.7k | else | 403 | 47.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 47.7k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotate> >(OT::Variable<OT::PaintRotate> const*) const Line | Count | Source | 399 | 70.4k | { | 400 | 70.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 70.4k | else | 403 | 70.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 70.4k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotateAroundCenter> >(OT::NoVariable<OT::PaintRotateAroundCenter> const*) const Line | Count | Source | 399 | 109k | { | 400 | 109k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 109k | else | 403 | 109k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 109k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotateAroundCenter> >(OT::Variable<OT::PaintRotateAroundCenter> const*) const Line | Count | Source | 399 | 21.8k | { | 400 | 21.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 21.8k | else | 403 | 21.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 21.8k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkew> >(OT::NoVariable<OT::PaintSkew> const*) const Line | Count | Source | 399 | 53.3k | { | 400 | 53.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 53.3k | else | 403 | 53.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 53.3k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkew> >(OT::Variable<OT::PaintSkew> const*) const Line | Count | Source | 399 | 40.8k | { | 400 | 40.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 40.8k | else | 403 | 40.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 40.8k | } |
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkewAroundCenter> >(OT::NoVariable<OT::PaintSkewAroundCenter> const*) const Line | Count | Source | 399 | 10.9k | { | 400 | 10.9k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 10.9k | else | 403 | 10.9k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 10.9k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkewAroundCenter> >(OT::Variable<OT::PaintSkewAroundCenter> const*) const Line | Count | Source | 399 | 73.7k | { | 400 | 73.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 73.7k | else | 403 | 73.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 73.7k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintColrGlyph>(OT::PaintColrGlyph const*) const Line | Count | Source | 399 | 64.7k | { | 400 | 64.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 64.7k | else | 403 | 64.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 64.7k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintTranslate>(OT::PaintTranslate const*) const Line | Count | Source | 399 | 173k | { | 400 | 173k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 173k | else | 403 | 173k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 173k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintScale>(OT::PaintScale const*) const Line | Count | Source | 399 | 94.2k | { | 400 | 94.2k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 94.2k | else | 403 | 94.2k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 94.2k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleAroundCenter>(OT::PaintScaleAroundCenter const*) const Line | Count | Source | 399 | 153k | { | 400 | 153k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 153k | else | 403 | 153k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 153k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniform>(OT::PaintScaleUniform const*) const Line | Count | Source | 399 | 165k | { | 400 | 165k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 165k | else | 403 | 165k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 165k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniformAroundCenter>(OT::PaintScaleUniformAroundCenter const*) const Line | Count | Source | 399 | 291k | { | 400 | 291k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 291k | else | 403 | 291k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 291k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintRotate>(OT::PaintRotate const*) const Line | Count | Source | 399 | 118k | { | 400 | 118k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 118k | else | 403 | 118k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 118k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintRotateAroundCenter>(OT::PaintRotateAroundCenter const*) const Line | Count | Source | 399 | 131k | { | 400 | 131k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 131k | else | 403 | 131k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 131k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintSkew>(OT::PaintSkew const*) const Line | Count | Source | 399 | 94.1k | { | 400 | 94.1k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 94.1k | else | 403 | 94.1k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 94.1k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintSkewAroundCenter>(OT::PaintSkewAroundCenter const*) const Line | Count | Source | 399 | 84.6k | { | 400 | 84.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 84.6k | else | 403 | 84.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 84.6k | } |
bool hb_sanitize_context_t::check_struct<OT::PaintComposite>(OT::PaintComposite const*) const Line | Count | Source | 399 | 621k | { | 400 | 621k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 621k | else | 403 | 621k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 621k | } |
bool hb_sanitize_context_t::check_struct<OT::ClipBoxFormat1>(OT::ClipBoxFormat1 const*) const Line | Count | Source | 399 | 48.6k | { | 400 | 48.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 48.6k | else | 403 | 48.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 48.6k | } |
bool hb_sanitize_context_t::check_struct<OT::ClipRecord>(OT::ClipRecord const*) const Line | Count | Source | 399 | 106k | { | 400 | 106k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 106k | else | 403 | 106k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 106k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const*) const Line | Count | Source | 399 | 106k | { | 400 | 106k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 106k | else | 403 | 106k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 106k | } |
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ClipBoxFormat1> >(OT::Variable<OT::ClipBoxFormat1> const*) const Line | Count | Source | 399 | 17.4k | { | 400 | 17.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 17.4k | else | 403 | 17.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 17.4k | } |
bool hb_sanitize_context_t::check_struct<OT::ClipList>(OT::ClipList const*) const Line | Count | Source | 399 | 6.76k | { | 400 | 6.76k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.76k | else | 403 | 6.76k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.76k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*) const Line | Count | Source | 399 | 963k | { | 400 | 963k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 963k | else | 403 | 963k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 963k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 1.31M | { | 400 | 1.31M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.31M | else | 403 | 1.31M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.31M | } |
bool hb_sanitize_context_t::check_struct<OT::COLR>(OT::COLR const*) const Line | Count | Source | 399 | 20.0k | { | 400 | 20.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 20.0k | else | 403 | 20.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 20.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseGlyphList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::BaseGlyphList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 13.4k | { | 400 | 13.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.4k | else | 403 | 13.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.4k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LayerList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::LayerList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 12.0k | { | 400 | 12.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 12.0k | else | 403 | 12.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 12.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ClipList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 11.5k | { | 400 | 11.5k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 11.5k | else | 403 | 11.5k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 11.5k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DeltaSetIndexMap, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::DeltaSetIndexMap, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 31.4k | { | 400 | 31.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 31.4k | else | 403 | 31.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 31.4k | } |
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::hhea> >(OT::_hea<OT::hhea> const*) const Line | Count | Source | 399 | 31.4k | { | 400 | 31.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 31.4k | else | 403 | 31.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 31.4k | } |
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::vhea> >(OT::_hea<OT::vhea> const*) const Line | Count | Source | 399 | 2.06k | { | 400 | 2.06k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.06k | else | 403 | 2.06k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.06k | } |
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const*) const Line | Count | Source | 399 | 9.72k | { | 400 | 9.72k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.72k | else | 403 | 9.72k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.72k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 9.68k | { | 400 | 9.68k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.68k | else | 403 | 9.68k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.68k | } |
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> const*) const Line | Count | Source | 399 | 2.87k | { | 400 | 2.87k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.87k | else | 403 | 2.87k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.87k | } |
bool hb_sanitize_context_t::check_struct<OT::OpenTypeOffsetTable>(OT::OpenTypeOffsetTable const*) const Line | Count | Source | 399 | 96.8k | { | 400 | 96.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 96.8k | else | 403 | 96.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 96.8k | } |
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > >(OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 97.4k | { | 400 | 97.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 97.4k | else | 403 | 97.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 97.4k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 21.4k | { | 400 | 21.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 21.4k | else | 403 | 21.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 21.4k | } |
bool hb_sanitize_context_t::check_struct<OT::ResourceForkHeader>(OT::ResourceForkHeader const*) const Line | Count | Source | 399 | 741 | { | 400 | 741 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 741 | else | 403 | 741 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 741 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ResourceMap, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::ResourceMap, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 610 | { | 400 | 610 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 610 | else | 403 | 610 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 610 | } |
bool hb_sanitize_context_t::check_struct<OT::ResourceMap>(OT::ResourceMap const*) const Line | Count | Source | 399 | 610 | { | 400 | 610 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 610 | else | 403 | 610 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 610 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 541 | { | 400 | 541 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 541 | else | 403 | 541 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 541 | } |
bool hb_sanitize_context_t::check_struct<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*) const Line | Count | Source | 399 | 476k | { | 400 | 476k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 476k | else | 403 | 476k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 476k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 476k | { | 400 | 476k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 476k | else | 403 | 476k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 476k | } |
bool hb_sanitize_context_t::check_struct<OT::ResourceRecord>(OT::ResourceRecord const*) const Line | Count | Source | 399 | 2.66k | { | 400 | 2.66k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.66k | else | 403 | 2.66k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.66k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<OT::NumType<true, unsigned char, 1u>, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 3u>, void, false> >(OT::OffsetTo<OT::ArrayOf<OT::NumType<true, unsigned char, 1u>, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 3u>, void, false> const*) const Line | Count | Source | 399 | 2.66k | { | 400 | 2.66k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.66k | else | 403 | 2.66k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.66k | } |
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 | 399 | 15.6k | { | 400 | 15.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 15.6k | else | 403 | 15.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 15.6k | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueMap>(OT::AxisValueMap const*) const bool hb_sanitize_context_t::check_struct<OT::avar>(OT::avar const*) const Line | Count | Source | 399 | 3.96k | { | 400 | 3.96k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.96k | else | 403 | 3.96k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.96k | } |
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::SVG>(OT::SVG const*) const Line | Count | Source | 399 | 1.14k | { | 400 | 1.14k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.14k | else | 403 | 1.14k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.14k | } |
bool hb_sanitize_context_t::check_struct<OT::CBLC>(OT::CBLC const*) const Line | Count | Source | 399 | 600 | { | 400 | 600 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 600 | else | 403 | 600 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 600 | } |
bool hb_sanitize_context_t::check_struct<OT::BitmapSizeTable>(OT::BitmapSizeTable const*) const Line | Count | Source | 399 | 1.06k | { | 400 | 1.06k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.06k | else | 403 | 1.06k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.06k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtableArray, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::IndexSubtableArray, OT::NumType<true, unsigned int, 4u>, void, false> const*) const Line | Count | Source | 399 | 1.06k | { | 400 | 1.06k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.06k | else | 403 | 1.06k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.06k | } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*) const Line | Count | Source | 399 | 1.97k | { | 400 | 1.97k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.97k | else | 403 | 1.97k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.97k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::IndexSubtable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 1.96k | { | 400 | 1.96k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.96k | else | 403 | 1.96k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.96k | } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableHeader>(OT::IndexSubtableHeader const*) const Line | Count | Source | 399 | 1.07k | { | 400 | 1.07k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.07k | else | 403 | 1.07k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.07k | } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned int, 4u> > >(OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned int, 4u> > const*) const Line | Count | Source | 399 | 353 | { | 400 | 353 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 353 | else | 403 | 353 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 353 | } |
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned short, 2u> > >(OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 308 | { | 400 | 308 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 308 | else | 403 | 308 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 308 | } |
bool hb_sanitize_context_t::check_struct<OT::SBitLineMetrics>(OT::SBitLineMetrics const*) const Line | Count | Source | 399 | 1.84k | { | 400 | 1.84k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.84k | else | 403 | 1.84k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.84k | } |
bool hb_sanitize_context_t::check_struct<OT::CBDT>(OT::CBDT const*) const Line | Count | Source | 399 | 435 | { | 400 | 435 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 435 | else | 403 | 435 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 435 | } |
bool hb_sanitize_context_t::check_struct<OT::sbix>(OT::sbix const*) const Line | Count | Source | 399 | 733 | { | 400 | 733 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 733 | else | 403 | 733 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 733 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 2.64k | { | 400 | 2.64k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.64k | else | 403 | 2.64k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.64k | } |
bool hb_sanitize_context_t::check_struct<OT::SBIXStrike>(OT::SBIXStrike const*) const Line | Count | Source | 399 | 1.85k | { | 400 | 1.85k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.85k | else | 403 | 1.85k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.85k | } |
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 | 399 | 786 | { | 400 | 786 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 786 | else | 403 | 786 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 786 | } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect>(CFF::FDSelect const*) const Line | Count | Source | 399 | 1.76k | { | 400 | 1.76k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.76k | else | 403 | 1.76k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.76k | } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*) const Line | Count | Source | 399 | 1.31k | { | 400 | 1.31k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.31k | else | 403 | 1.31k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.31k | } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*) const Line | Count | Source | 399 | 36.8k | { | 400 | 36.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 36.8k | else | 403 | 36.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 36.8k | } |
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 | 399 | 1.31k | { | 400 | 1.31k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.31k | else | 403 | 1.31k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.31k | } |
bool hb_sanitize_context_t::check_struct<CFF::Charset>(CFF::Charset const*) const Line | Count | Source | 399 | 6.33k | { | 400 | 6.33k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 6.33k | else | 403 | 6.33k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 6.33k | } |
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::NumType<true, unsigned char, 1u> > >(CFF::Charset_Range<OT::NumType<true, unsigned char, 1u> > const*) const Line | Count | Source | 399 | 22.6k | { | 400 | 22.6k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 22.6k | else | 403 | 22.6k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 22.6k | } |
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::NumType<true, unsigned short, 2u> > >(CFF::Charset_Range<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 23.4k | { | 400 | 23.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 23.4k | else | 403 | 23.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 23.4k | } |
bool hb_sanitize_context_t::check_struct<OT::cff1>(OT::cff1 const*) const Line | Count | Source | 399 | 13.1k | { | 400 | 13.1k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 13.1k | else | 403 | 13.1k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 13.1k | } |
bool hb_sanitize_context_t::check_struct<OT::CFFIndex<OT::NumType<true, unsigned short, 2u> > >(OT::CFFIndex<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 69.8k | { | 400 | 69.8k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 69.8k | else | 403 | 69.8k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 69.8k | } |
bool hb_sanitize_context_t::check_struct<CFF::CFF2FDSelect>(CFF::CFF2FDSelect const*) const Line | Count | Source | 399 | 592 | { | 400 | 592 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 592 | else | 403 | 592 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 592 | } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 174 | { | 400 | 174 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 174 | else | 403 | 174 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 174 | } |
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 825 | { | 400 | 825 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 825 | else | 403 | 825 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 825 | } |
bool hb_sanitize_context_t::check_struct<CFF::CFF2ItemVariationStore>(CFF::CFF2ItemVariationStore const*) const Line | Count | Source | 399 | 3.94k | { | 400 | 3.94k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.94k | else | 403 | 3.94k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.94k | } |
bool hb_sanitize_context_t::check_struct<OT::cff2>(OT::cff2 const*) const Line | Count | Source | 399 | 9.94k | { | 400 | 9.94k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 9.94k | else | 403 | 9.94k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 9.94k | } |
bool hb_sanitize_context_t::check_struct<OT::KernOTSubTableHeader>(OT::KernOTSubTableHeader const*) const Line | Count | Source | 399 | 4.31k | { | 400 | 4.31k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.31k | else | 403 | 4.31k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.31k | } |
bool hb_sanitize_context_t::check_struct<OT::KernAATSubTableHeader>(OT::KernAATSubTableHeader const*) const Line | Count | Source | 399 | 3.07k | { | 400 | 3.07k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 3.07k | else | 403 | 3.07k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 3.07k | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> const*) const Line | Count | Source | 399 | 329 | { | 400 | 329 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 329 | else | 403 | 329 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 329 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> const*) const Line | Count | Source | 399 | 285 | { | 400 | 285 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 285 | else | 403 | 285 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 285 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 938 | { | 400 | 938 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 938 | else | 403 | 938 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 938 | } |
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> > >(AAT::ClassTable<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 938 | { | 400 | 938 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 938 | else | 403 | 938 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 938 | } |
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernOTSubTableHeader> >(OT::KernSubTableFormat3<OT::KernOTSubTableHeader> const*) const Line | Count | Source | 399 | 313 | { | 400 | 313 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 313 | else | 403 | 313 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 313 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 399 | 234 | { | 400 | 234 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 234 | else | 403 | 234 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 234 | } |
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 399 | 194 | { | 400 | 194 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 194 | else | 403 | 194 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 194 | } |
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernAATSubTableHeader> >(OT::KernSubTableFormat3<OT::KernAATSubTableHeader> const*) const Line | Count | Source | 399 | 83 | { | 400 | 83 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 83 | else | 403 | 83 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 83 | } |
bool hb_sanitize_context_t::check_struct<OT::DataMap>(OT::DataMap const*) const Line | Count | Source | 399 | 785 | { | 400 | 785 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 785 | else | 403 | 785 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 785 | } |
bool hb_sanitize_context_t::check_struct<OT::meta>(OT::meta const*) const Line | Count | Source | 399 | 43 | { | 400 | 43 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 43 | else | 403 | 43 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 43 | } |
bool hb_sanitize_context_t::check_struct<OT::NameRecord>(OT::NameRecord const*) const Line | Count | Source | 399 | 264k | { | 400 | 264k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 264k | else | 403 | 264k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 264k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Line | Count | Source | 399 | 264k | { | 400 | 264k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 264k | else | 403 | 264k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 264k | } |
bool hb_sanitize_context_t::check_struct<OT::name>(OT::name const*) const Line | Count | Source | 399 | 4.49k | { | 400 | 4.49k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.49k | else | 403 | 4.49k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.49k | } |
bool hb_sanitize_context_t::check_struct<OT::post>(OT::post const*) const Line | Count | Source | 399 | 4.66k | { | 400 | 4.66k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.66k | else | 403 | 4.66k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.66k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 5.31k | { | 400 | 5.31k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.31k | else | 403 | 5.31k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.31k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 4.62k | { | 400 | 4.62k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.62k | else | 403 | 4.62k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.62k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 4.29k | { | 400 | 4.29k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.29k | else | 403 | 4.29k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.29k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const Line | Count | Source | 399 | 4.17k | { | 400 | 4.17k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.17k | else | 403 | 4.17k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.17k | } |
bool hb_sanitize_context_t::check_struct<OT::VORG>(OT::VORG const*) const Line | Count | Source | 399 | 562 | { | 400 | 562 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 562 | else | 403 | 562 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 562 | } |
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 | 399 | 1.36k | { | 400 | 1.36k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.36k | else | 403 | 1.36k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.36k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Axis, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Axis, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.94k | { | 400 | 1.94k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.94k | else | 403 | 1.94k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.94k | } |
bool hb_sanitize_context_t::check_struct<OT::Axis>(OT::Axis const*) const Line | Count | Source | 399 | 1.62k | { | 400 | 1.62k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.62k | else | 403 | 1.62k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.62k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::Tag, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::Tag, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.60k | { | 400 | 1.60k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.60k | else | 403 | 1.60k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.60k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseScriptList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseScriptList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.51k | { | 400 | 1.51k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.51k | else | 403 | 1.51k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.51k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseScriptList>(OT::BaseScriptList const*) const Line | Count | Source | 399 | 1.38k | { | 400 | 1.38k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.38k | else | 403 | 1.38k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.38k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseScriptRecord>(OT::BaseScriptRecord const*) const Line | Count | Source | 399 | 62.7k | { | 400 | 62.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 62.7k | else | 403 | 62.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 62.7k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseScript, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseScript, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 62.7k | { | 400 | 62.7k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 62.7k | else | 403 | 62.7k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 62.7k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseScript>(OT::BaseScript const*) const Line | Count | Source | 399 | 7.95k | { | 400 | 7.95k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.95k | else | 403 | 7.95k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.95k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseValues, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseValues, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 7.89k | { | 400 | 7.89k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.89k | else | 403 | 7.89k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.89k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseValues>(OT::BaseValues const*) const Line | Count | Source | 399 | 4.73k | { | 400 | 4.73k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.73k | else | 403 | 4.73k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.73k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 109k | { | 400 | 109k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 109k | else | 403 | 109k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 109k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat1>(OT::BaseCoordFormat1 const*) const Line | Count | Source | 399 | 7.75k | { | 400 | 7.75k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.75k | else | 403 | 7.75k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.75k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2>(OT::BaseCoordFormat2 const*) const Line | Count | Source | 399 | 4.27k | { | 400 | 4.27k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 4.27k | else | 403 | 4.27k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 4.27k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat3>(OT::BaseCoordFormat3 const*) const Line | Count | Source | 399 | 7.46k | { | 400 | 7.46k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 7.46k | else | 403 | 7.46k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 7.46k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MinMax, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MinMax, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 82.1k | { | 400 | 82.1k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 82.1k | else | 403 | 82.1k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 82.1k | } |
bool hb_sanitize_context_t::check_struct<OT::MinMax>(OT::MinMax const*) const Line | Count | Source | 399 | 5.63k | { | 400 | 5.63k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 5.63k | else | 403 | 5.63k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 5.63k | } |
bool hb_sanitize_context_t::check_struct<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*) const Line | Count | Source | 399 | 42.4k | { | 400 | 42.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 42.4k | else | 403 | 42.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 42.4k | } |
bool hb_sanitize_context_t::check_struct<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*) const Line | Count | Source | 399 | 74.4k | { | 400 | 74.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 74.4k | else | 403 | 74.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 74.4k | } |
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::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::IndexArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned short, 2u>, void, 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::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfScript, OT::NumType<true, unsigned short, 2u>, void, 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::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, 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::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathConstants, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.33k | { | 400 | 1.33k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.33k | else | 403 | 1.33k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.33k | } |
bool hb_sanitize_context_t::check_struct<OT::MathConstants>(OT::MathConstants const*) const Line | Count | Source | 399 | 663 | { | 400 | 663 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 663 | else | 403 | 663 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 663 | } |
bool hb_sanitize_context_t::check_struct<OT::MathValueRecord>(OT::MathValueRecord const*) const Line | Count | Source | 399 | 71.8M | { | 400 | 71.8M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 71.8M | else | 403 | 71.8M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 71.8M | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.23k | { | 400 | 1.23k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.23k | else | 403 | 1.23k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.23k | } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphInfo>(OT::MathGlyphInfo const*) const Line | Count | Source | 399 | 1.15k | { | 400 | 1.15k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.15k | else | 403 | 1.15k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.15k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.14k | { | 400 | 1.14k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.14k | else | 403 | 1.14k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.14k | } |
bool hb_sanitize_context_t::check_struct<OT::MathItalicsCorrectionInfo>(OT::MathItalicsCorrectionInfo const*) const Line | Count | Source | 399 | 749 | { | 400 | 749 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 749 | else | 403 | 749 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 749 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathTopAccentAttachment, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathTopAccentAttachment, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.09k | { | 400 | 1.09k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.09k | else | 403 | 1.09k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.09k | } |
bool hb_sanitize_context_t::check_struct<OT::MathTopAccentAttachment>(OT::MathTopAccentAttachment const*) const Line | Count | Source | 399 | 881 | { | 400 | 881 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 881 | else | 403 | 881 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 881 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKernInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathKernInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.05k | { | 400 | 1.05k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.05k | else | 403 | 1.05k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.05k | } |
bool hb_sanitize_context_t::check_struct<OT::MathKernInfo>(OT::MathKernInfo const*) const Line | Count | Source | 399 | 676 | { | 400 | 676 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 676 | else | 403 | 676 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 676 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKern, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathKern, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 2.24M | { | 400 | 2.24M | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 2.24M | else | 403 | 2.24M | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 2.24M | } |
bool hb_sanitize_context_t::check_struct<OT::MathKern>(OT::MathKern const*) const Line | Count | Source | 399 | 30.0k | { | 400 | 30.0k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 30.0k | else | 403 | 30.0k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 30.0k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathVariants, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathVariants, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 1.01k | { | 400 | 1.01k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 1.01k | else | 403 | 1.01k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 1.01k | } |
bool hb_sanitize_context_t::check_struct<OT::MathVariants>(OT::MathVariants const*) const Line | Count | Source | 399 | 929 | { | 400 | 929 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 929 | else | 403 | 929 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 929 | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 713k | { | 400 | 713k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 713k | else | 403 | 713k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 713k | } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphConstruction>(OT::MathGlyphConstruction const*) const Line | Count | Source | 399 | 24.3k | { | 400 | 24.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 24.3k | else | 403 | 24.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 24.3k | } |
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphAssembly, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphAssembly, OT::NumType<true, unsigned short, 2u>, void, true> const*) const Line | Count | Source | 399 | 24.3k | { | 400 | 24.3k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 24.3k | else | 403 | 24.3k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 24.3k | } |
bool hb_sanitize_context_t::check_struct<OT::MathGlyphAssembly>(OT::MathGlyphAssembly const*) const Line | Count | Source | 399 | 16.4k | { | 400 | 16.4k | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 16.4k | else | 403 | 16.4k | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 16.4k | } |
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 bool hb_sanitize_context_t::check_struct<OT::cvar>(OT::cvar const*) const Line | Count | Source | 399 | 14 | { | 400 | 14 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 14 | else | 403 | 14 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 14 | } |
bool hb_sanitize_context_t::check_struct<OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > >(OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > const*) const Line | Count | Source | 399 | 11 | { | 400 | 11 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 11 | else | 403 | 11 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 11 | } |
bool hb_sanitize_context_t::check_struct<OT::hdmx>(OT::hdmx const*) const Line | Count | Source | 399 | 99 | { | 400 | 99 | if (sizeof (uintptr_t) == sizeof (uint32_t)) | 401 | 0 | return likely (this->check_range_fast (obj, obj->min_size)); | 402 | 99 | else | 403 | 99 | return likely (this->check_point ((const char *) obj + obj->min_size)); | 404 | 99 | } |
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::DeviceRecord>(OT::DeviceRecord const*) const |
405 | | |
406 | | template <typename Type> |
407 | | hb_blob_t *sanitize_blob (hb_blob_t *blob) |
408 | 3.14M | { |
409 | 3.14M | bool sane; |
410 | | |
411 | 3.14M | init (blob); |
412 | | |
413 | 3.14M | DEBUG_MSG_FUNC (SANITIZE, start, "start"); |
414 | | |
415 | 3.14M | start_processing (); |
416 | | |
417 | 3.14M | if (unlikely (!start)) |
418 | 2.53M | { |
419 | 2.53M | end_processing (); |
420 | 2.53M | return blob; |
421 | 2.53M | } |
422 | | |
423 | 614k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); |
424 | | |
425 | 614k | sane = t->sanitize (this); |
426 | | |
427 | 614k | end_processing (); |
428 | | |
429 | 614k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); |
430 | 614k | if (sane) |
431 | 522k | { |
432 | 522k | hb_blob_make_immutable (blob); |
433 | 522k | return blob; |
434 | 522k | } |
435 | 91.9k | else |
436 | 91.9k | { |
437 | 91.9k | hb_blob_destroy (blob); |
438 | 91.9k | return hb_blob_get_empty (); |
439 | 91.9k | } |
440 | 614k | } hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF>(hb_blob_t*) Line | Count | Source | 408 | 76.1k | { | 409 | 76.1k | bool sane; | 410 | | | 411 | 76.1k | init (blob); | 412 | | | 413 | 76.1k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 76.1k | start_processing (); | 416 | | | 417 | 76.1k | if (unlikely (!start)) | 418 | 63.0k | { | 419 | 63.0k | end_processing (); | 420 | 63.0k | return blob; | 421 | 63.0k | } | 422 | | | 423 | 13.0k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 13.0k | sane = t->sanitize (this); | 426 | | | 427 | 13.0k | end_processing (); | 428 | | | 429 | 13.0k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 13.0k | if (sane) | 431 | 11.2k | { | 432 | 11.2k | hb_blob_make_immutable (blob); | 433 | 11.2k | return blob; | 434 | 11.2k | } | 435 | 1.81k | else | 436 | 1.81k | { | 437 | 1.81k | hb_blob_destroy (blob); | 438 | 1.81k | return hb_blob_get_empty (); | 439 | 1.81k | } | 440 | 13.0k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB>(hb_blob_t*) Line | Count | Source | 408 | 98.1k | { | 409 | 98.1k | bool sane; | 410 | | | 411 | 98.1k | init (blob); | 412 | | | 413 | 98.1k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 98.1k | start_processing (); | 416 | | | 417 | 98.1k | if (unlikely (!start)) | 418 | 60.5k | { | 419 | 60.5k | end_processing (); | 420 | 60.5k | return blob; | 421 | 60.5k | } | 422 | | | 423 | 37.5k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 37.5k | sane = t->sanitize (this); | 426 | | | 427 | 37.5k | end_processing (); | 428 | | | 429 | 37.5k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 37.5k | if (sane) | 431 | 28.4k | { | 432 | 28.4k | hb_blob_make_immutable (blob); | 433 | 28.4k | return blob; | 434 | 28.4k | } | 435 | 9.12k | else | 436 | 9.12k | { | 437 | 9.12k | hb_blob_destroy (blob); | 438 | 9.12k | return hb_blob_get_empty (); | 439 | 9.12k | } | 440 | 37.5k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::morx>(hb_blob_t*) Line | Count | Source | 408 | 36.1k | { | 409 | 36.1k | bool sane; | 410 | | | 411 | 36.1k | init (blob); | 412 | | | 413 | 36.1k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.1k | start_processing (); | 416 | | | 417 | 36.1k | if (unlikely (!start)) | 418 | 34.3k | { | 419 | 34.3k | end_processing (); | 420 | 34.3k | return blob; | 421 | 34.3k | } | 422 | | | 423 | 1.79k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.79k | sane = t->sanitize (this); | 426 | | | 427 | 1.79k | end_processing (); | 428 | | | 429 | 1.79k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.79k | if (sane) | 431 | 1.23k | { | 432 | 1.23k | hb_blob_make_immutable (blob); | 433 | 1.23k | return blob; | 434 | 1.23k | } | 435 | 566 | else | 436 | 566 | { | 437 | 566 | hb_blob_destroy (blob); | 438 | 566 | return hb_blob_get_empty (); | 439 | 566 | } | 440 | 1.79k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ltag>(hb_blob_t*) Line | Count | Source | 408 | 285 | { | 409 | 285 | bool sane; | 410 | | | 411 | 285 | init (blob); | 412 | | | 413 | 285 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 285 | start_processing (); | 416 | | | 417 | 285 | if (unlikely (!start)) | 418 | 176 | { | 419 | 176 | end_processing (); | 420 | 176 | return blob; | 421 | 176 | } | 422 | | | 423 | 109 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 109 | sane = t->sanitize (this); | 426 | | | 427 | 109 | end_processing (); | 428 | | | 429 | 109 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 109 | if (sane) | 431 | 70 | { | 432 | 70 | hb_blob_make_immutable (blob); | 433 | 70 | return blob; | 434 | 70 | } | 435 | 39 | else | 436 | 39 | { | 437 | 39 | hb_blob_destroy (blob); | 438 | 39 | return hb_blob_get_empty (); | 439 | 39 | } | 440 | 109 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::mort>(hb_blob_t*) Line | Count | Source | 408 | 35.0k | { | 409 | 35.0k | bool sane; | 410 | | | 411 | 35.0k | init (blob); | 412 | | | 413 | 35.0k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 35.0k | start_processing (); | 416 | | | 417 | 35.0k | if (unlikely (!start)) | 418 | 33.1k | { | 419 | 33.1k | end_processing (); | 420 | 33.1k | return blob; | 421 | 33.1k | } | 422 | | | 423 | 1.90k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.90k | sane = t->sanitize (this); | 426 | | | 427 | 1.90k | end_processing (); | 428 | | | 429 | 1.90k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.90k | if (sane) | 431 | 1.56k | { | 432 | 1.56k | hb_blob_make_immutable (blob); | 433 | 1.56k | return blob; | 434 | 1.56k | } | 435 | 339 | else | 436 | 339 | { | 437 | 339 | hb_blob_destroy (blob); | 438 | 339 | return hb_blob_get_empty (); | 439 | 339 | } | 440 | 1.90k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::kerx>(hb_blob_t*) Line | Count | Source | 408 | 36.1k | { | 409 | 36.1k | bool sane; | 410 | | | 411 | 36.1k | init (blob); | 412 | | | 413 | 36.1k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.1k | start_processing (); | 416 | | | 417 | 36.1k | if (unlikely (!start)) | 418 | 34.0k | { | 419 | 34.0k | end_processing (); | 420 | 34.0k | return blob; | 421 | 34.0k | } | 422 | | | 423 | 2.17k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.17k | sane = t->sanitize (this); | 426 | | | 427 | 2.17k | end_processing (); | 428 | | | 429 | 2.17k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.17k | if (sane) | 431 | 1.62k | { | 432 | 1.62k | hb_blob_make_immutable (blob); | 433 | 1.62k | return blob; | 434 | 1.62k | } | 435 | 554 | else | 436 | 554 | { | 437 | 554 | hb_blob_destroy (blob); | 438 | 554 | return hb_blob_get_empty (); | 439 | 554 | } | 440 | 2.17k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ankr>(hb_blob_t*) Line | Count | Source | 408 | 1.62k | { | 409 | 1.62k | bool sane; | 410 | | | 411 | 1.62k | init (blob); | 412 | | | 413 | 1.62k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 1.62k | start_processing (); | 416 | | | 417 | 1.62k | if (unlikely (!start)) | 418 | 1.20k | { | 419 | 1.20k | end_processing (); | 420 | 1.20k | return blob; | 421 | 1.20k | } | 422 | | | 423 | 416 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 416 | sane = t->sanitize (this); | 426 | | | 427 | 416 | end_processing (); | 428 | | | 429 | 416 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 416 | if (sane) | 431 | 133 | { | 432 | 133 | hb_blob_make_immutable (blob); | 433 | 133 | return blob; | 434 | 133 | } | 435 | 283 | else | 436 | 283 | { | 437 | 283 | hb_blob_destroy (blob); | 438 | 283 | return hb_blob_get_empty (); | 439 | 283 | } | 440 | 416 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::trak>(hb_blob_t*) Line | Count | Source | 408 | 36.6k | { | 409 | 36.6k | bool sane; | 410 | | | 411 | 36.6k | init (blob); | 412 | | | 413 | 36.6k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.6k | start_processing (); | 416 | | | 417 | 36.6k | if (unlikely (!start)) | 418 | 36.4k | { | 419 | 36.4k | end_processing (); | 420 | 36.4k | return blob; | 421 | 36.4k | } | 422 | | | 423 | 178 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 178 | sane = t->sanitize (this); | 426 | | | 427 | 178 | end_processing (); | 428 | | | 429 | 178 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 178 | if (sane) | 431 | 129 | { | 432 | 129 | hb_blob_make_immutable (blob); | 433 | 129 | return blob; | 434 | 129 | } | 435 | 49 | else | 436 | 49 | { | 437 | 49 | hb_blob_destroy (blob); | 438 | 49 | return hb_blob_get_empty (); | 439 | 49 | } | 440 | 178 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::feat>(hb_blob_t*) Line | Count | Source | 408 | 36.8k | { | 409 | 36.8k | bool sane; | 410 | | | 411 | 36.8k | init (blob); | 412 | | | 413 | 36.8k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.8k | start_processing (); | 416 | | | 417 | 36.8k | if (unlikely (!start)) | 418 | 36.7k | { | 419 | 36.7k | end_processing (); | 420 | 36.7k | return blob; | 421 | 36.7k | } | 422 | | | 423 | 42 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 42 | sane = t->sanitize (this); | 426 | | | 427 | 42 | end_processing (); | 428 | | | 429 | 42 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 42 | if (sane) | 431 | 15 | { | 432 | 15 | hb_blob_make_immutable (blob); | 433 | 15 | return blob; | 434 | 15 | } | 435 | 27 | else | 436 | 27 | { | 437 | 27 | hb_blob_destroy (blob); | 438 | 27 | return hb_blob_get_empty (); | 439 | 27 | } | 440 | 42 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS>(hb_blob_t*) Line | Count | Source | 408 | 98.0k | { | 409 | 98.0k | bool sane; | 410 | | | 411 | 98.0k | init (blob); | 412 | | | 413 | 98.0k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 98.0k | start_processing (); | 416 | | | 417 | 98.0k | if (unlikely (!start)) | 418 | 67.6k | { | 419 | 67.6k | end_processing (); | 420 | 67.6k | return blob; | 421 | 67.6k | } | 422 | | | 423 | 30.4k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 30.4k | sane = t->sanitize (this); | 426 | | | 427 | 30.4k | end_processing (); | 428 | | | 429 | 30.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 30.4k | if (sane) | 431 | 22.9k | { | 432 | 22.9k | hb_blob_make_immutable (blob); | 433 | 22.9k | return blob; | 434 | 22.9k | } | 435 | 7.51k | else | 436 | 7.51k | { | 437 | 7.51k | hb_blob_destroy (blob); | 438 | 7.51k | return hb_blob_get_empty (); | 439 | 7.51k | } | 440 | 30.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT>(hb_blob_t*) Line | Count | Source | 408 | 22.1k | { | 409 | 22.1k | bool sane; | 410 | | | 411 | 22.1k | init (blob); | 412 | | | 413 | 22.1k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 22.1k | start_processing (); | 416 | | | 417 | 22.1k | if (unlikely (!start)) | 418 | 17.4k | { | 419 | 17.4k | end_processing (); | 420 | 17.4k | return blob; | 421 | 17.4k | } | 422 | | | 423 | 4.63k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 4.63k | sane = t->sanitize (this); | 426 | | | 427 | 4.63k | end_processing (); | 428 | | | 429 | 4.63k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 4.63k | if (sane) | 431 | 3.23k | { | 432 | 3.23k | hb_blob_make_immutable (blob); | 433 | 3.23k | return blob; | 434 | 3.23k | } | 435 | 1.39k | else | 436 | 1.39k | { | 437 | 1.39k | hb_blob_destroy (blob); | 438 | 1.39k | return hb_blob_get_empty (); | 439 | 1.39k | } | 440 | 4.63k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::loca>(hb_blob_t*) Line | Count | Source | 408 | 103k | { | 409 | 103k | bool sane; | 410 | | | 411 | 103k | init (blob); | 412 | | | 413 | 103k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 103k | start_processing (); | 416 | | | 417 | 103k | if (unlikely (!start)) | 418 | 71.8k | { | 419 | 71.8k | end_processing (); | 420 | 71.8k | return blob; | 421 | 71.8k | } | 422 | | | 423 | 31.2k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 31.2k | sane = t->sanitize (this); | 426 | | | 427 | 31.2k | end_processing (); | 428 | | | 429 | 31.2k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 31.2k | if (sane) | 431 | 31.2k | { | 432 | 31.2k | hb_blob_make_immutable (blob); | 433 | 31.2k | return blob; | 434 | 31.2k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 31.2k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp>(hb_blob_t*) Line | Count | Source | 408 | 103k | { | 409 | 103k | bool sane; | 410 | | | 411 | 103k | init (blob); | 412 | | | 413 | 103k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 103k | start_processing (); | 416 | | | 417 | 103k | if (unlikely (!start)) | 418 | 58.0k | { | 419 | 58.0k | end_processing (); | 420 | 58.0k | return blob; | 421 | 58.0k | } | 422 | | | 423 | 45.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 45.7k | sane = t->sanitize (this); | 426 | | | 427 | 45.7k | end_processing (); | 428 | | | 429 | 45.7k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 45.7k | if (sane) | 431 | 38.5k | { | 432 | 38.5k | hb_blob_make_immutable (blob); | 433 | 38.5k | return blob; | 434 | 38.5k | } | 435 | 7.17k | else | 436 | 7.17k | { | 437 | 7.17k | hb_blob_destroy (blob); | 438 | 7.17k | return hb_blob_get_empty (); | 439 | 7.17k | } | 440 | 45.7k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head>(hb_blob_t*) Line | Count | Source | 408 | 112k | { | 409 | 112k | bool sane; | 410 | | | 411 | 112k | init (blob); | 412 | | | 413 | 112k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 112k | start_processing (); | 416 | | | 417 | 112k | if (unlikely (!start)) | 418 | 79.1k | { | 419 | 79.1k | end_processing (); | 420 | 79.1k | return blob; | 421 | 79.1k | } | 422 | | | 423 | 33.5k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 33.5k | sane = t->sanitize (this); | 426 | | | 427 | 33.5k | end_processing (); | 428 | | | 429 | 33.5k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 33.5k | if (sane) | 431 | 21.2k | { | 432 | 21.2k | hb_blob_make_immutable (blob); | 433 | 21.2k | return blob; | 434 | 21.2k | } | 435 | 12.2k | else | 436 | 12.2k | { | 437 | 12.2k | hb_blob_destroy (blob); | 438 | 12.2k | return hb_blob_get_empty (); | 439 | 12.2k | } | 440 | 33.5k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR>(hb_blob_t*) Line | Count | Source | 408 | 37.4k | { | 409 | 37.4k | bool sane; | 410 | | | 411 | 37.4k | init (blob); | 412 | | | 413 | 37.4k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 37.4k | start_processing (); | 416 | | | 417 | 37.4k | if (unlikely (!start)) | 418 | 36.4k | { | 419 | 36.4k | end_processing (); | 420 | 36.4k | return blob; | 421 | 36.4k | } | 422 | | | 423 | 945 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 945 | sane = t->sanitize (this); | 426 | | | 427 | 945 | end_processing (); | 428 | | | 429 | 945 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 945 | if (sane) | 431 | 405 | { | 432 | 405 | hb_blob_make_immutable (blob); | 433 | 405 | return blob; | 434 | 405 | } | 435 | 540 | else | 436 | 540 | { | 437 | 540 | hb_blob_destroy (blob); | 438 | 540 | return hb_blob_get_empty (); | 439 | 540 | } | 440 | 945 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap>(hb_blob_t*) Line | Count | Source | 408 | 137k | { | 409 | 137k | bool sane; | 410 | | | 411 | 137k | init (blob); | 412 | | | 413 | 137k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 137k | start_processing (); | 416 | | | 417 | 137k | if (unlikely (!start)) | 418 | 92.9k | { | 419 | 92.9k | end_processing (); | 420 | 92.9k | return blob; | 421 | 92.9k | } | 422 | | | 423 | 44.8k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 44.8k | sane = t->sanitize (this); | 426 | | | 427 | 44.8k | end_processing (); | 428 | | | 429 | 44.8k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 44.8k | if (sane) | 431 | 38.1k | { | 432 | 38.1k | hb_blob_make_immutable (blob); | 433 | 38.1k | return blob; | 434 | 38.1k | } | 435 | 6.64k | else | 436 | 6.64k | { | 437 | 6.64k | hb_blob_destroy (blob); | 438 | 6.64k | return hb_blob_get_empty (); | 439 | 6.64k | } | 440 | 44.8k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2>(hb_blob_t*) Line | Count | Source | 408 | 37.4k | { | 409 | 37.4k | bool sane; | 410 | | | 411 | 37.4k | init (blob); | 412 | | | 413 | 37.4k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 37.4k | start_processing (); | 416 | | | 417 | 37.4k | if (unlikely (!start)) | 418 | 35.2k | { | 419 | 35.2k | end_processing (); | 420 | 35.2k | return blob; | 421 | 35.2k | } | 422 | | | 423 | 2.20k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.20k | sane = t->sanitize (this); | 426 | | | 427 | 2.20k | end_processing (); | 428 | | | 429 | 2.20k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.20k | if (sane) | 431 | 1.90k | { | 432 | 1.90k | hb_blob_make_immutable (blob); | 433 | 1.90k | return blob; | 434 | 1.90k | } | 435 | 295 | else | 436 | 295 | { | 437 | 295 | hb_blob_destroy (blob); | 438 | 295 | return hb_blob_get_empty (); | 439 | 295 | } | 440 | 2.20k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL>(hb_blob_t*) Line | Count | Source | 408 | 62.2k | { | 409 | 62.2k | bool sane; | 410 | | | 411 | 62.2k | init (blob); | 412 | | | 413 | 62.2k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 62.2k | start_processing (); | 416 | | | 417 | 62.2k | if (unlikely (!start)) | 418 | 59.5k | { | 419 | 59.5k | end_processing (); | 420 | 59.5k | return blob; | 421 | 59.5k | } | 422 | | | 423 | 2.66k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.66k | sane = t->sanitize (this); | 426 | | | 427 | 2.66k | end_processing (); | 428 | | | 429 | 2.66k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.66k | if (sane) | 431 | 2.12k | { | 432 | 2.12k | hb_blob_make_immutable (blob); | 433 | 2.12k | return blob; | 434 | 2.12k | } | 435 | 547 | else | 436 | 547 | { | 437 | 547 | hb_blob_destroy (blob); | 438 | 547 | return hb_blob_get_empty (); | 439 | 547 | } | 440 | 2.66k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR>(hb_blob_t*) Line | Count | Source | 408 | 103k | { | 409 | 103k | bool sane; | 410 | | | 411 | 103k | init (blob); | 412 | | | 413 | 103k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 103k | start_processing (); | 416 | | | 417 | 103k | if (unlikely (!start)) | 418 | 90.2k | { | 419 | 90.2k | end_processing (); | 420 | 90.2k | return blob; | 421 | 90.2k | } | 422 | | | 423 | 13.4k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 13.4k | sane = t->sanitize (this); | 426 | | | 427 | 13.4k | end_processing (); | 428 | | | 429 | 13.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 13.4k | if (sane) | 431 | 11.1k | { | 432 | 11.1k | hb_blob_make_immutable (blob); | 433 | 11.1k | return blob; | 434 | 11.1k | } | 435 | 2.28k | else | 436 | 2.28k | { | 437 | 2.28k | hb_blob_destroy (blob); | 438 | 2.28k | return hb_blob_get_empty (); | 439 | 2.28k | } | 440 | 13.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_blob_t*) Line | Count | Source | 408 | 89.6k | { | 409 | 89.6k | bool sane; | 410 | | | 411 | 89.6k | init (blob); | 412 | | | 413 | 89.6k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 89.6k | start_processing (); | 416 | | | 417 | 89.6k | if (unlikely (!start)) | 418 | 61.2k | { | 419 | 61.2k | end_processing (); | 420 | 61.2k | return blob; | 421 | 61.2k | } | 422 | | | 423 | 28.4k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 28.4k | sane = t->sanitize (this); | 426 | | | 427 | 28.4k | end_processing (); | 428 | | | 429 | 28.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 28.4k | if (sane) | 431 | 28.4k | { | 432 | 28.4k | hb_blob_make_immutable (blob); | 433 | 28.4k | return blob; | 434 | 28.4k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 28.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR>(hb_blob_t*) Line | Count | Source | 408 | 89.6k | { | 409 | 89.6k | bool sane; | 410 | | | 411 | 89.6k | init (blob); | 412 | | | 413 | 89.6k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 89.6k | start_processing (); | 416 | | | 417 | 89.6k | if (unlikely (!start)) | 418 | 82.1k | { | 419 | 82.1k | end_processing (); | 420 | 82.1k | return blob; | 421 | 82.1k | } | 422 | | | 423 | 7.46k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 7.46k | sane = t->sanitize (this); | 426 | | | 427 | 7.46k | end_processing (); | 428 | | | 429 | 7.46k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 7.46k | if (sane) | 431 | 3.95k | { | 432 | 3.95k | hb_blob_make_immutable (blob); | 433 | 3.95k | return blob; | 434 | 3.95k | } | 435 | 3.50k | else | 436 | 3.50k | { | 437 | 3.50k | hb_blob_destroy (blob); | 438 | 3.50k | return hb_blob_get_empty (); | 439 | 3.50k | } | 440 | 7.46k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hhea>(hb_blob_t*) Line | Count | Source | 408 | 89.5k | { | 409 | 89.5k | bool sane; | 410 | | | 411 | 89.5k | init (blob); | 412 | | | 413 | 89.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 89.5k | start_processing (); | 416 | | | 417 | 89.5k | if (unlikely (!start)) | 418 | 58.0k | { | 419 | 58.0k | end_processing (); | 420 | 58.0k | return blob; | 421 | 58.0k | } | 422 | | | 423 | 31.4k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 31.4k | sane = t->sanitize (this); | 426 | | | 427 | 31.4k | end_processing (); | 428 | | | 429 | 31.4k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 31.4k | if (sane) | 431 | 22.4k | { | 432 | 22.4k | hb_blob_make_immutable (blob); | 433 | 22.4k | return blob; | 434 | 22.4k | } | 435 | 8.96k | else | 436 | 8.96k | { | 437 | 8.96k | hb_blob_destroy (blob); | 438 | 8.96k | return hb_blob_get_empty (); | 439 | 8.96k | } | 440 | 31.4k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vhea>(hb_blob_t*) Line | Count | Source | 408 | 85.5k | { | 409 | 85.5k | bool sane; | 410 | | | 411 | 85.5k | init (blob); | 412 | | | 413 | 85.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 85.5k | start_processing (); | 416 | | | 417 | 85.5k | if (unlikely (!start)) | 418 | 83.5k | { | 419 | 83.5k | end_processing (); | 420 | 83.5k | return blob; | 421 | 83.5k | } | 422 | | | 423 | 2.06k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.06k | sane = t->sanitize (this); | 426 | | | 427 | 2.06k | end_processing (); | 428 | | | 429 | 2.06k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.06k | if (sane) | 431 | 1.59k | { | 432 | 1.59k | hb_blob_make_immutable (blob); | 433 | 1.59k | return blob; | 434 | 1.59k | } | 435 | 463 | else | 436 | 463 | { | 437 | 463 | hb_blob_destroy (blob); | 438 | 463 | return hb_blob_get_empty (); | 439 | 463 | } | 440 | 2.06k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_blob_t*) Line | Count | Source | 408 | 86.5k | { | 409 | 86.5k | bool sane; | 410 | | | 411 | 86.5k | init (blob); | 412 | | | 413 | 86.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 86.5k | start_processing (); | 416 | | | 417 | 86.5k | if (unlikely (!start)) | 418 | 83.8k | { | 419 | 83.8k | end_processing (); | 420 | 83.8k | return blob; | 421 | 83.8k | } | 422 | | | 423 | 2.67k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.67k | sane = t->sanitize (this); | 426 | | | 427 | 2.67k | end_processing (); | 428 | | | 429 | 2.67k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.67k | if (sane) | 431 | 2.67k | { | 432 | 2.67k | hb_blob_make_immutable (blob); | 433 | 2.67k | return blob; | 434 | 2.67k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 2.67k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR>(hb_blob_t*) Line | Count | Source | 408 | 86.5k | { | 409 | 86.5k | bool sane; | 410 | | | 411 | 86.5k | init (blob); | 412 | | | 413 | 86.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 86.5k | start_processing (); | 416 | | | 417 | 86.5k | if (unlikely (!start)) | 418 | 85.4k | { | 419 | 85.4k | end_processing (); | 420 | 85.4k | return blob; | 421 | 85.4k | } | 422 | | | 423 | 1.07k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.07k | sane = t->sanitize (this); | 426 | | | 427 | 1.07k | end_processing (); | 428 | | | 429 | 1.07k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.07k | if (sane) | 431 | 269 | { | 432 | 269 | hb_blob_make_immutable (blob); | 433 | 269 | return blob; | 434 | 269 | } | 435 | 801 | else | 436 | 801 | { | 437 | 801 | hb_blob_destroy (blob); | 438 | 801 | return hb_blob_get_empty (); | 439 | 801 | } | 440 | 1.07k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(hb_blob_t*) Line | Count | Source | 408 | 84.2k | { | 409 | 84.2k | bool sane; | 410 | | | 411 | 84.2k | init (blob); | 412 | | | 413 | 84.2k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 84.2k | start_processing (); | 416 | | | 417 | 84.2k | if (unlikely (!start)) | 418 | 75.9k | { | 419 | 75.9k | end_processing (); | 420 | 75.9k | return blob; | 421 | 75.9k | } | 422 | | | 423 | 8.25k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 8.25k | sane = t->sanitize (this); | 426 | | | 427 | 8.25k | end_processing (); | 428 | | | 429 | 8.25k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 8.25k | if (sane) | 431 | 5.03k | { | 432 | 5.03k | hb_blob_make_immutable (blob); | 433 | 5.03k | return blob; | 434 | 5.03k | } | 435 | 3.22k | else | 436 | 3.22k | { | 437 | 3.22k | hb_blob_destroy (blob); | 438 | 3.22k | return hb_blob_get_empty (); | 439 | 3.22k | } | 440 | 8.25k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(hb_blob_t*) Line | Count | Source | 408 | 83.9k | { | 409 | 83.9k | bool sane; | 410 | | | 411 | 83.9k | init (blob); | 412 | | | 413 | 83.9k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 83.9k | start_processing (); | 416 | | | 417 | 83.9k | if (unlikely (!start)) | 418 | 81.0k | { | 419 | 81.0k | end_processing (); | 420 | 81.0k | return blob; | 421 | 81.0k | } | 422 | | | 423 | 2.87k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.87k | sane = t->sanitize (this); | 426 | | | 427 | 2.87k | end_processing (); | 428 | | | 429 | 2.87k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.87k | if (sane) | 431 | 2.31k | { | 432 | 2.31k | hb_blob_make_immutable (blob); | 433 | 2.31k | return blob; | 434 | 2.31k | } | 435 | 564 | else | 436 | 564 | { | 437 | 564 | hb_blob_destroy (blob); | 438 | 564 | return hb_blob_get_empty (); | 439 | 564 | } | 440 | 2.87k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf>(hb_blob_t*) Line | Count | Source | 408 | 111k | { | 409 | 111k | bool sane; | 410 | | | 411 | 111k | init (blob); | 412 | | | 413 | 111k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 111k | start_processing (); | 416 | | | 417 | 111k | if (unlikely (!start)) | 418 | 74.7k | { | 419 | 74.7k | end_processing (); | 420 | 74.7k | return blob; | 421 | 74.7k | } | 422 | | | 423 | 36.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 36.7k | sane = t->sanitize (this); | 426 | | | 427 | 36.7k | end_processing (); | 428 | | | 429 | 36.7k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 36.7k | if (sane) | 431 | 36.7k | { | 432 | 36.7k | hb_blob_make_immutable (blob); | 433 | 36.7k | return blob; | 434 | 36.7k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 36.7k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OpenTypeFontFile>(hb_blob_t*) Line | Count | Source | 408 | 104k | { | 409 | 104k | bool sane; | 410 | | | 411 | 104k | init (blob); | 412 | | | 413 | 104k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 104k | start_processing (); | 416 | | | 417 | 104k | if (unlikely (!start)) | 418 | 107 | { | 419 | 107 | end_processing (); | 420 | 107 | return blob; | 421 | 107 | } | 422 | | | 423 | 104k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 104k | sane = t->sanitize (this); | 426 | | | 427 | 104k | end_processing (); | 428 | | | 429 | 104k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 104k | if (sane) | 431 | 102k | { | 432 | 102k | hb_blob_make_immutable (blob); | 433 | 102k | return blob; | 434 | 102k | } | 435 | 2.27k | else | 436 | 2.27k | { | 437 | 2.27k | hb_blob_destroy (blob); | 438 | 2.27k | return hb_blob_get_empty (); | 439 | 2.27k | } | 440 | 104k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar>(hb_blob_t*) Line | Count | Source | 408 | 103k | { | 409 | 103k | bool sane; | 410 | | | 411 | 103k | init (blob); | 412 | | | 413 | 103k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 103k | start_processing (); | 416 | | | 417 | 103k | if (unlikely (!start)) | 418 | 84.9k | { | 419 | 84.9k | end_processing (); | 420 | 84.9k | return blob; | 421 | 84.9k | } | 422 | | | 423 | 18.7k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 18.7k | sane = t->sanitize (this); | 426 | | | 427 | 18.7k | end_processing (); | 428 | | | 429 | 18.7k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 18.7k | if (sane) | 431 | 13.9k | { | 432 | 13.9k | hb_blob_make_immutable (blob); | 433 | 13.9k | return blob; | 434 | 13.9k | } | 435 | 4.77k | else | 436 | 4.77k | { | 437 | 4.77k | hb_blob_destroy (blob); | 438 | 4.77k | return hb_blob_get_empty (); | 439 | 4.77k | } | 440 | 18.7k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::SVG>(hb_blob_t*) Line | Count | Source | 408 | 64.3k | { | 409 | 64.3k | bool sane; | 410 | | | 411 | 64.3k | init (blob); | 412 | | | 413 | 64.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 64.3k | start_processing (); | 416 | | | 417 | 64.3k | if (unlikely (!start)) | 418 | 63.1k | { | 419 | 63.1k | end_processing (); | 420 | 63.1k | return blob; | 421 | 63.1k | } | 422 | | | 423 | 1.14k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.14k | sane = t->sanitize (this); | 426 | | | 427 | 1.14k | end_processing (); | 428 | | | 429 | 1.14k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.14k | if (sane) | 431 | 1.00k | { | 432 | 1.00k | hb_blob_make_immutable (blob); | 433 | 1.00k | return blob; | 434 | 1.00k | } | 435 | 137 | else | 436 | 137 | { | 437 | 137 | hb_blob_destroy (blob); | 438 | 137 | return hb_blob_get_empty (); | 439 | 137 | } | 440 | 1.14k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC>(hb_blob_t*) Line | Count | Source | 408 | 64.3k | { | 409 | 64.3k | bool sane; | 410 | | | 411 | 64.3k | init (blob); | 412 | | | 413 | 64.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 64.3k | start_processing (); | 416 | | | 417 | 64.3k | if (unlikely (!start)) | 418 | 64.0k | { | 419 | 64.0k | end_processing (); | 420 | 64.0k | return blob; | 421 | 64.0k | } | 422 | | | 423 | 354 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 354 | sane = t->sanitize (this); | 426 | | | 427 | 354 | end_processing (); | 428 | | | 429 | 354 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 354 | if (sane) | 431 | 263 | { | 432 | 263 | hb_blob_make_immutable (blob); | 433 | 263 | return blob; | 434 | 263 | } | 435 | 91 | else | 436 | 91 | { | 437 | 91 | hb_blob_destroy (blob); | 438 | 91 | return hb_blob_get_empty (); | 439 | 91 | } | 440 | 354 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBDT>(hb_blob_t*) Line | Count | Source | 408 | 64.5k | { | 409 | 64.5k | bool sane; | 410 | | | 411 | 64.5k | init (blob); | 412 | | | 413 | 64.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 64.5k | start_processing (); | 416 | | | 417 | 64.5k | if (unlikely (!start)) | 418 | 64.1k | { | 419 | 64.1k | end_processing (); | 420 | 64.1k | return blob; | 421 | 64.1k | } | 422 | | | 423 | 435 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 435 | sane = t->sanitize (this); | 426 | | | 427 | 435 | end_processing (); | 428 | | | 429 | 435 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 435 | if (sane) | 431 | 410 | { | 432 | 410 | hb_blob_make_immutable (blob); | 433 | 410 | return blob; | 434 | 410 | } | 435 | 25 | else | 436 | 25 | { | 437 | 25 | hb_blob_destroy (blob); | 438 | 25 | return hb_blob_get_empty (); | 439 | 25 | } | 440 | 435 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix>(hb_blob_t*) Line | Count | Source | 408 | 64.3k | { | 409 | 64.3k | bool sane; | 410 | | | 411 | 64.3k | init (blob); | 412 | | | 413 | 64.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 64.3k | start_processing (); | 416 | | | 417 | 64.3k | if (unlikely (!start)) | 418 | 63.8k | { | 419 | 63.8k | end_processing (); | 420 | 63.8k | return blob; | 421 | 63.8k | } | 422 | | | 423 | 530 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 530 | sane = t->sanitize (this); | 426 | | | 427 | 530 | end_processing (); | 428 | | | 429 | 530 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 530 | if (sane) | 431 | 368 | { | 432 | 368 | hb_blob_make_immutable (blob); | 433 | 368 | return blob; | 434 | 368 | } | 435 | 162 | else | 436 | 162 | { | 437 | 162 | hb_blob_destroy (blob); | 438 | 162 | return hb_blob_get_empty (); | 439 | 162 | } | 440 | 530 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff1>(hb_blob_t*) Line | Count | Source | 408 | 98.6k | { | 409 | 98.6k | bool sane; | 410 | | | 411 | 98.6k | init (blob); | 412 | | | 413 | 98.6k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 98.6k | start_processing (); | 416 | | | 417 | 98.6k | if (unlikely (!start)) | 418 | 85.5k | { | 419 | 85.5k | end_processing (); | 420 | 85.5k | return blob; | 421 | 85.5k | } | 422 | | | 423 | 13.1k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 13.1k | sane = t->sanitize (this); | 426 | | | 427 | 13.1k | end_processing (); | 428 | | | 429 | 13.1k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 13.1k | if (sane) | 431 | 12.5k | { | 432 | 12.5k | hb_blob_make_immutable (blob); | 433 | 12.5k | return blob; | 434 | 12.5k | } | 435 | 588 | else | 436 | 588 | { | 437 | 588 | hb_blob_destroy (blob); | 438 | 588 | return hb_blob_get_empty (); | 439 | 588 | } | 440 | 13.1k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff2>(hb_blob_t*) Line | Count | Source | 408 | 61.7k | { | 409 | 61.7k | bool sane; | 410 | | | 411 | 61.7k | init (blob); | 412 | | | 413 | 61.7k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 61.7k | start_processing (); | 416 | | | 417 | 61.7k | if (unlikely (!start)) | 418 | 51.8k | { | 419 | 51.8k | end_processing (); | 420 | 51.8k | return blob; | 421 | 51.8k | } | 422 | | | 423 | 9.94k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 9.94k | sane = t->sanitize (this); | 426 | | | 427 | 9.94k | end_processing (); | 428 | | | 429 | 9.94k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 9.94k | if (sane) | 431 | 9.68k | { | 432 | 9.68k | hb_blob_make_immutable (blob); | 433 | 9.68k | return blob; | 434 | 9.68k | } | 435 | 261 | else | 436 | 261 | { | 437 | 261 | hb_blob_destroy (blob); | 438 | 261 | return hb_blob_get_empty (); | 439 | 261 | } | 440 | 9.94k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::kern>(hb_blob_t*) Line | Count | Source | 408 | 34.3k | { | 409 | 34.3k | bool sane; | 410 | | | 411 | 34.3k | init (blob); | 412 | | | 413 | 34.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 34.3k | start_processing (); | 416 | | | 417 | 34.3k | if (unlikely (!start)) | 418 | 32.5k | { | 419 | 32.5k | end_processing (); | 420 | 32.5k | return blob; | 421 | 32.5k | } | 422 | | | 423 | 1.77k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.77k | sane = t->sanitize (this); | 426 | | | 427 | 1.77k | end_processing (); | 428 | | | 429 | 1.77k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.77k | if (sane) | 431 | 1.54k | { | 432 | 1.54k | hb_blob_make_immutable (blob); | 433 | 1.54k | return blob; | 434 | 1.54k | } | 435 | 225 | else | 436 | 225 | { | 437 | 225 | hb_blob_destroy (blob); | 438 | 225 | return hb_blob_get_empty (); | 439 | 225 | } | 440 | 1.77k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*) Line | Count | Source | 408 | 36.4k | { | 409 | 36.4k | bool sane; | 410 | | | 411 | 36.4k | init (blob); | 412 | | | 413 | 36.4k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.4k | start_processing (); | 416 | | | 417 | 36.4k | if (unlikely (!start)) | 418 | 36.3k | { | 419 | 36.3k | end_processing (); | 420 | 36.3k | return blob; | 421 | 36.3k | } | 422 | | | 423 | 43 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 43 | sane = t->sanitize (this); | 426 | | | 427 | 43 | end_processing (); | 428 | | | 429 | 43 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 43 | if (sane) | 431 | 14 | { | 432 | 14 | hb_blob_make_immutable (blob); | 433 | 14 | return blob; | 434 | 14 | } | 435 | 29 | else | 436 | 29 | { | 437 | 29 | hb_blob_destroy (blob); | 438 | 29 | return hb_blob_get_empty (); | 439 | 29 | } | 440 | 43 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*) Line | Count | Source | 408 | 36.3k | { | 409 | 36.3k | bool sane; | 410 | | | 411 | 36.3k | init (blob); | 412 | | | 413 | 36.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.3k | start_processing (); | 416 | | | 417 | 36.3k | if (unlikely (!start)) | 418 | 34.5k | { | 419 | 34.5k | end_processing (); | 420 | 34.5k | return blob; | 421 | 34.5k | } | 422 | | | 423 | 1.82k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.82k | sane = t->sanitize (this); | 426 | | | 427 | 1.82k | end_processing (); | 428 | | | 429 | 1.82k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.82k | if (sane) | 431 | 856 | { | 432 | 856 | hb_blob_make_immutable (blob); | 433 | 856 | return blob; | 434 | 856 | } | 435 | 972 | else | 436 | 972 | { | 437 | 972 | hb_blob_destroy (blob); | 438 | 972 | return hb_blob_get_empty (); | 439 | 972 | } | 440 | 1.82k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post>(hb_blob_t*) Line | Count | Source | 408 | 36.4k | { | 409 | 36.4k | bool sane; | 410 | | | 411 | 36.4k | init (blob); | 412 | | | 413 | 36.4k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.4k | start_processing (); | 416 | | | 417 | 36.4k | if (unlikely (!start)) | 418 | 34.0k | { | 419 | 34.0k | end_processing (); | 420 | 34.0k | return blob; | 421 | 34.0k | } | 422 | | | 423 | 2.37k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.37k | sane = t->sanitize (this); | 426 | | | 427 | 2.37k | end_processing (); | 428 | | | 429 | 2.37k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.37k | if (sane) | 431 | 1.46k | { | 432 | 1.46k | hb_blob_make_immutable (blob); | 433 | 1.46k | return blob; | 434 | 1.46k | } | 435 | 908 | else | 436 | 908 | { | 437 | 908 | hb_blob_destroy (blob); | 438 | 908 | return hb_blob_get_empty (); | 439 | 908 | } | 440 | 2.37k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VARC>(hb_blob_t*) Line | Count | Source | 408 | 64.3k | { | 409 | 64.3k | bool sane; | 410 | | | 411 | 64.3k | init (blob); | 412 | | | 413 | 64.3k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 64.3k | start_processing (); | 416 | | | 417 | 64.3k | if (unlikely (!start)) | 418 | 58.5k | { | 419 | 58.5k | end_processing (); | 420 | 58.5k | return blob; | 421 | 58.5k | } | 422 | | | 423 | 5.81k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 5.81k | sane = t->sanitize (this); | 426 | | | 427 | 5.81k | end_processing (); | 428 | | | 429 | 5.81k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 5.81k | if (sane) | 431 | 4.11k | { | 432 | 4.11k | hb_blob_make_immutable (blob); | 433 | 4.11k | return blob; | 434 | 4.11k | } | 435 | 1.69k | else | 436 | 1.69k | { | 437 | 1.69k | hb_blob_destroy (blob); | 438 | 1.69k | return hb_blob_get_empty (); | 439 | 1.69k | } | 440 | 5.81k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG>(hb_blob_t*) Line | Count | Source | 408 | 36.7k | { | 409 | 36.7k | bool sane; | 410 | | | 411 | 36.7k | init (blob); | 412 | | | 413 | 36.7k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 36.7k | start_processing (); | 416 | | | 417 | 36.7k | if (unlikely (!start)) | 418 | 36.5k | { | 419 | 36.5k | end_processing (); | 420 | 36.5k | return blob; | 421 | 36.5k | } | 422 | | | 423 | 215 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 215 | sane = t->sanitize (this); | 426 | | | 427 | 215 | end_processing (); | 428 | | | 429 | 215 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 215 | if (sane) | 431 | 161 | { | 432 | 161 | hb_blob_make_immutable (blob); | 433 | 161 | return blob; | 434 | 161 | } | 435 | 54 | else | 436 | 54 | { | 437 | 54 | hb_blob_destroy (blob); | 438 | 54 | return hb_blob_get_empty (); | 439 | 54 | } | 440 | 215 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE>(hb_blob_t*) Line | Count | Source | 408 | 75.5k | { | 409 | 75.5k | bool sane; | 410 | | | 411 | 75.5k | init (blob); | 412 | | | 413 | 75.5k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 75.5k | start_processing (); | 416 | | | 417 | 75.5k | if (unlikely (!start)) | 418 | 74.1k | { | 419 | 74.1k | end_processing (); | 420 | 74.1k | return blob; | 421 | 74.1k | } | 422 | | | 423 | 1.36k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.36k | sane = t->sanitize (this); | 426 | | | 427 | 1.36k | end_processing (); | 428 | | | 429 | 1.36k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.36k | if (sane) | 431 | 506 | { | 432 | 506 | hb_blob_make_immutable (blob); | 433 | 506 | return blob; | 434 | 506 | } | 435 | 858 | else | 436 | 858 | { | 437 | 858 | hb_blob_destroy (blob); | 438 | 858 | return hb_blob_get_empty (); | 439 | 858 | } | 440 | 1.36k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH>(hb_blob_t*) Line | Count | Source | 408 | 76.2k | { | 409 | 76.2k | bool sane; | 410 | | | 411 | 76.2k | init (blob); | 412 | | | 413 | 76.2k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 76.2k | start_processing (); | 416 | | | 417 | 76.2k | if (unlikely (!start)) | 418 | 74.8k | { | 419 | 74.8k | end_processing (); | 420 | 74.8k | return blob; | 421 | 74.8k | } | 422 | | | 423 | 1.41k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.41k | sane = t->sanitize (this); | 426 | | | 427 | 1.41k | end_processing (); | 428 | | | 429 | 1.41k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.41k | if (sane) | 431 | 858 | { | 432 | 858 | hb_blob_make_immutable (blob); | 433 | 858 | return blob; | 434 | 858 | } | 435 | 558 | else | 436 | 558 | { | 437 | 558 | hb_blob_destroy (blob); | 438 | 558 | return hb_blob_get_empty (); | 439 | 558 | } | 440 | 1.41k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar>(hb_blob_t*) Line | Count | Source | 408 | 83.6k | { | 409 | 83.6k | bool sane; | 410 | | | 411 | 83.6k | init (blob); | 412 | | | 413 | 83.6k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 83.6k | start_processing (); | 416 | | | 417 | 83.6k | if (unlikely (!start)) | 418 | 77.7k | { | 419 | 77.7k | end_processing (); | 420 | 77.7k | return blob; | 421 | 77.7k | } | 422 | | | 423 | 5.92k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 5.92k | sane = t->sanitize (this); | 426 | | | 427 | 5.92k | end_processing (); | 428 | | | 429 | 5.92k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 5.92k | if (sane) | 431 | 3.15k | { | 432 | 3.15k | hb_blob_make_immutable (blob); | 433 | 3.15k | return blob; | 434 | 3.15k | } | 435 | 2.77k | else | 436 | 2.77k | { | 437 | 2.77k | hb_blob_destroy (blob); | 438 | 2.77k | return hb_blob_get_empty (); | 439 | 2.77k | } | 440 | 5.92k | } |
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*) Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*) hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head const>(hb_blob_t*) Line | Count | Source | 408 | 2.41k | { | 409 | 2.41k | bool sane; | 410 | | | 411 | 2.41k | init (blob); | 412 | | | 413 | 2.41k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 2.41k | start_processing (); | 416 | | | 417 | 2.41k | if (unlikely (!start)) | 418 | 129 | { | 419 | 129 | end_processing (); | 420 | 129 | return blob; | 421 | 129 | } | 422 | | | 423 | 2.28k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.28k | sane = t->sanitize (this); | 426 | | | 427 | 2.28k | end_processing (); | 428 | | | 429 | 2.28k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.28k | if (sane) | 431 | 1.15k | { | 432 | 1.15k | hb_blob_make_immutable (blob); | 433 | 1.15k | return blob; | 434 | 1.15k | } | 435 | 1.13k | else | 436 | 1.13k | { | 437 | 1.13k | hb_blob_destroy (blob); | 438 | 1.13k | return hb_blob_get_empty (); | 439 | 1.13k | } | 440 | 2.28k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT const>(hb_blob_t*) Line | Count | Source | 408 | 1.00k | { | 409 | 1.00k | bool sane; | 410 | | | 411 | 1.00k | init (blob); | 412 | | | 413 | 1.00k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 1.00k | start_processing (); | 416 | | | 417 | 1.00k | if (unlikely (!start)) | 418 | 12 | { | 419 | 12 | end_processing (); | 420 | 12 | return blob; | 421 | 12 | } | 422 | | | 423 | 995 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 995 | sane = t->sanitize (this); | 426 | | | 427 | 995 | end_processing (); | 428 | | | 429 | 995 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 995 | if (sane) | 431 | 943 | { | 432 | 943 | hb_blob_make_immutable (blob); | 433 | 943 | return blob; | 434 | 943 | } | 435 | 52 | else | 436 | 52 | { | 437 | 52 | hb_blob_destroy (blob); | 438 | 52 | return hb_blob_get_empty (); | 439 | 52 | } | 440 | 995 | } |
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar>(hb_blob_t*) hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF const>(hb_blob_t*) Line | Count | Source | 408 | 13 | { | 409 | 13 | bool sane; | 410 | | | 411 | 13 | init (blob); | 412 | | | 413 | 13 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 13 | start_processing (); | 416 | | | 417 | 13 | if (unlikely (!start)) | 418 | 0 | { | 419 | 0 | end_processing (); | 420 | 0 | return blob; | 421 | 0 | } | 422 | | | 423 | 13 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 13 | sane = t->sanitize (this); | 426 | | | 427 | 13 | end_processing (); | 428 | | | 429 | 13 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 13 | if (sane) | 431 | 8 | { | 432 | 8 | hb_blob_make_immutable (blob); | 433 | 8 | return blob; | 434 | 8 | } | 435 | 5 | else | 436 | 5 | { | 437 | 5 | hb_blob_destroy (blob); | 438 | 5 | return hb_blob_get_empty (); | 439 | 5 | } | 440 | 13 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB const>(hb_blob_t*) Line | Count | Source | 408 | 4 | { | 409 | 4 | bool sane; | 410 | | | 411 | 4 | init (blob); | 412 | | | 413 | 4 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 4 | start_processing (); | 416 | | | 417 | 4 | if (unlikely (!start)) | 418 | 1 | { | 419 | 1 | end_processing (); | 420 | 1 | return blob; | 421 | 1 | } | 422 | | | 423 | 3 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 3 | sane = t->sanitize (this); | 426 | | | 427 | 3 | end_processing (); | 428 | | | 429 | 3 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 3 | if (sane) | 431 | 1 | { | 432 | 1 | hb_blob_make_immutable (blob); | 433 | 1 | return blob; | 434 | 1 | } | 435 | 2 | else | 436 | 2 | { | 437 | 2 | hb_blob_destroy (blob); | 438 | 2 | return hb_blob_get_empty (); | 439 | 2 | } | 440 | 3 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS const>(hb_blob_t*) Line | Count | Source | 408 | 9 | { | 409 | 9 | bool sane; | 410 | | | 411 | 9 | init (blob); | 412 | | | 413 | 9 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 9 | start_processing (); | 416 | | | 417 | 9 | if (unlikely (!start)) | 418 | 1 | { | 419 | 1 | end_processing (); | 420 | 1 | return blob; | 421 | 1 | } | 422 | | | 423 | 8 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 8 | sane = t->sanitize (this); | 426 | | | 427 | 8 | end_processing (); | 428 | | | 429 | 8 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 8 | if (sane) | 431 | 5 | { | 432 | 5 | hb_blob_make_immutable (blob); | 433 | 5 | return blob; | 434 | 5 | } | 435 | 3 | else | 436 | 3 | { | 437 | 3 | hb_blob_destroy (blob); | 438 | 3 | return hb_blob_get_empty (); | 439 | 3 | } | 440 | 8 | } |
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE const>(hb_blob_t*) Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH const>(hb_blob_t*) hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR const>(hb_blob_t*) Line | Count | Source | 408 | 3.38k | { | 409 | 3.38k | bool sane; | 410 | | | 411 | 3.38k | init (blob); | 412 | | | 413 | 3.38k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 3.38k | start_processing (); | 416 | | | 417 | 3.38k | if (unlikely (!start)) | 418 | 980 | { | 419 | 980 | end_processing (); | 420 | 980 | return blob; | 421 | 980 | } | 422 | | | 423 | 2.40k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.40k | sane = t->sanitize (this); | 426 | | | 427 | 2.40k | end_processing (); | 428 | | | 429 | 2.40k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.40k | if (sane) | 431 | 1.35k | { | 432 | 1.35k | hb_blob_make_immutable (blob); | 433 | 1.35k | return blob; | 434 | 1.35k | } | 435 | 1.05k | else | 436 | 1.05k | { | 437 | 1.05k | hb_blob_destroy (blob); | 438 | 1.05k | return hb_blob_get_empty (); | 439 | 1.05k | } | 440 | 2.40k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR const>(hb_blob_t*) Line | Count | Source | 408 | 142 | { | 409 | 142 | bool sane; | 410 | | | 411 | 142 | init (blob); | 412 | | | 413 | 142 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 142 | start_processing (); | 416 | | | 417 | 142 | if (unlikely (!start)) | 418 | 9 | { | 419 | 9 | end_processing (); | 420 | 9 | return blob; | 421 | 9 | } | 422 | | | 423 | 133 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 133 | sane = t->sanitize (this); | 426 | | | 427 | 133 | end_processing (); | 428 | | | 429 | 133 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 133 | if (sane) | 431 | 44 | { | 432 | 44 | hb_blob_make_immutable (blob); | 433 | 44 | return blob; | 434 | 44 | } | 435 | 89 | else | 436 | 89 | { | 437 | 89 | hb_blob_destroy (blob); | 438 | 89 | return hb_blob_get_empty (); | 439 | 89 | } | 440 | 133 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const>(hb_blob_t*) Line | Count | Source | 408 | 1.53k | { | 409 | 1.53k | bool sane; | 410 | | | 411 | 1.53k | init (blob); | 412 | | | 413 | 1.53k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 1.53k | start_processing (); | 416 | | | 417 | 1.53k | if (unlikely (!start)) | 418 | 66 | { | 419 | 66 | end_processing (); | 420 | 66 | return blob; | 421 | 66 | } | 422 | | | 423 | 1.46k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.46k | sane = t->sanitize (this); | 426 | | | 427 | 1.46k | end_processing (); | 428 | | | 429 | 1.46k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.46k | if (sane) | 431 | 998 | { | 432 | 998 | hb_blob_make_immutable (blob); | 433 | 998 | return blob; | 434 | 998 | } | 435 | 470 | else | 436 | 470 | { | 437 | 470 | hb_blob_destroy (blob); | 438 | 470 | return hb_blob_get_empty (); | 439 | 470 | } | 440 | 1.46k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar const>(hb_blob_t*) Line | Count | Source | 408 | 1.00k | { | 409 | 1.00k | bool sane; | 410 | | | 411 | 1.00k | init (blob); | 412 | | | 413 | 1.00k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 1.00k | start_processing (); | 416 | | | 417 | 1.00k | if (unlikely (!start)) | 418 | 0 | { | 419 | 0 | end_processing (); | 420 | 0 | return blob; | 421 | 0 | } | 422 | | | 423 | 1.00k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.00k | sane = t->sanitize (this); | 426 | | | 427 | 1.00k | end_processing (); | 428 | | | 429 | 1.00k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.00k | if (sane) | 431 | 1.00k | { | 432 | 1.00k | hb_blob_make_immutable (blob); | 433 | 1.00k | return blob; | 434 | 1.00k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 1.00k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar const>(hb_blob_t*) Line | Count | Source | 408 | 178 | { | 409 | 178 | bool sane; | 410 | | | 411 | 178 | init (blob); | 412 | | | 413 | 178 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 178 | start_processing (); | 416 | | | 417 | 178 | if (unlikely (!start)) | 418 | 1 | { | 419 | 1 | end_processing (); | 420 | 1 | return blob; | 421 | 1 | } | 422 | | | 423 | 177 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 177 | sane = t->sanitize (this); | 426 | | | 427 | 177 | end_processing (); | 428 | | | 429 | 177 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 177 | if (sane) | 431 | 157 | { | 432 | 157 | hb_blob_make_immutable (blob); | 433 | 157 | return blob; | 434 | 157 | } | 435 | 20 | else | 436 | 20 | { | 437 | 20 | hb_blob_destroy (blob); | 438 | 20 | return hb_blob_get_empty (); | 439 | 20 | } | 440 | 177 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar const>(hb_blob_t*) Line | Count | Source | 408 | 16 | { | 409 | 16 | bool sane; | 410 | | | 411 | 16 | init (blob); | 412 | | | 413 | 16 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 16 | start_processing (); | 416 | | | 417 | 16 | if (unlikely (!start)) | 418 | 2 | { | 419 | 2 | end_processing (); | 420 | 2 | return blob; | 421 | 2 | } | 422 | | | 423 | 14 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 14 | sane = t->sanitize (this); | 426 | | | 427 | 14 | end_processing (); | 428 | | | 429 | 14 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 14 | if (sane) | 431 | 11 | { | 432 | 11 | hb_blob_make_immutable (blob); | 433 | 11 | return blob; | 434 | 11 | } | 435 | 3 | else | 436 | 3 | { | 437 | 3 | hb_blob_destroy (blob); | 438 | 3 | return hb_blob_get_empty (); | 439 | 3 | } | 440 | 14 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR const>(hb_blob_t*) Line | Count | Source | 408 | 220 | { | 409 | 220 | bool sane; | 410 | | | 411 | 220 | init (blob); | 412 | | | 413 | 220 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 220 | start_processing (); | 416 | | | 417 | 220 | if (unlikely (!start)) | 418 | 1 | { | 419 | 1 | end_processing (); | 420 | 1 | return blob; | 421 | 1 | } | 422 | | | 423 | 219 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 219 | sane = t->sanitize (this); | 426 | | | 427 | 219 | end_processing (); | 428 | | | 429 | 219 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 219 | if (sane) | 431 | 191 | { | 432 | 191 | hb_blob_make_immutable (blob); | 433 | 191 | return blob; | 434 | 191 | } | 435 | 28 | else | 436 | 28 | { | 437 | 28 | hb_blob_destroy (blob); | 438 | 28 | return hb_blob_get_empty (); | 439 | 28 | } | 440 | 219 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG const>(hb_blob_t*) Line | Count | Source | 408 | 352 | { | 409 | 352 | bool sane; | 410 | | | 411 | 352 | init (blob); | 412 | | | 413 | 352 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 352 | start_processing (); | 416 | | | 417 | 352 | if (unlikely (!start)) | 418 | 5 | { | 419 | 5 | end_processing (); | 420 | 5 | return blob; | 421 | 5 | } | 422 | | | 423 | 347 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 347 | sane = t->sanitize (this); | 426 | | | 427 | 347 | end_processing (); | 428 | | | 429 | 347 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 347 | if (sane) | 431 | 324 | { | 432 | 324 | hb_blob_make_immutable (blob); | 433 | 324 | return blob; | 434 | 324 | } | 435 | 23 | else | 436 | 23 | { | 437 | 23 | hb_blob_destroy (blob); | 438 | 23 | return hb_blob_get_empty (); | 439 | 23 | } | 440 | 347 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix const>(hb_blob_t*) Line | Count | Source | 408 | 214 | { | 409 | 214 | bool sane; | 410 | | | 411 | 214 | init (blob); | 412 | | | 413 | 214 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 214 | start_processing (); | 416 | | | 417 | 214 | if (unlikely (!start)) | 418 | 11 | { | 419 | 11 | end_processing (); | 420 | 11 | return blob; | 421 | 11 | } | 422 | | | 423 | 203 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 203 | sane = t->sanitize (this); | 426 | | | 427 | 203 | end_processing (); | 428 | | | 429 | 203 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 203 | if (sane) | 431 | 152 | { | 432 | 152 | hb_blob_make_immutable (blob); | 433 | 152 | return blob; | 434 | 152 | } | 435 | 51 | else | 436 | 51 | { | 437 | 51 | hb_blob_destroy (blob); | 438 | 51 | return hb_blob_get_empty (); | 439 | 51 | } | 440 | 203 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR const>(hb_blob_t*) Line | Count | Source | 408 | 6.64k | { | 409 | 6.64k | bool sane; | 410 | | | 411 | 6.64k | init (blob); | 412 | | | 413 | 6.64k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 6.64k | start_processing (); | 416 | | | 417 | 6.64k | if (unlikely (!start)) | 418 | 51 | { | 419 | 51 | end_processing (); | 420 | 51 | return blob; | 421 | 51 | } | 422 | | | 423 | 6.59k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 6.59k | sane = t->sanitize (this); | 426 | | | 427 | 6.59k | end_processing (); | 428 | | | 429 | 6.59k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 6.59k | if (sane) | 431 | 5.78k | { | 432 | 5.78k | hb_blob_make_immutable (blob); | 433 | 5.78k | return blob; | 434 | 5.78k | } | 435 | 807 | else | 436 | 807 | { | 437 | 807 | hb_blob_destroy (blob); | 438 | 807 | return hb_blob_get_empty (); | 439 | 807 | } | 440 | 6.59k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL const>(hb_blob_t*) Line | Count | Source | 408 | 1.07k | { | 409 | 1.07k | bool sane; | 410 | | | 411 | 1.07k | init (blob); | 412 | | | 413 | 1.07k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 1.07k | start_processing (); | 416 | | | 417 | 1.07k | if (unlikely (!start)) | 418 | 43 | { | 419 | 43 | end_processing (); | 420 | 43 | return blob; | 421 | 43 | } | 422 | | | 423 | 1.03k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 1.03k | sane = t->sanitize (this); | 426 | | | 427 | 1.03k | end_processing (); | 428 | | | 429 | 1.03k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 1.03k | if (sane) | 431 | 837 | { | 432 | 837 | hb_blob_make_immutable (blob); | 433 | 837 | return blob; | 434 | 837 | } | 435 | 198 | else | 436 | 198 | { | 437 | 198 | hb_blob_destroy (blob); | 438 | 198 | return hb_blob_get_empty (); | 439 | 198 | } | 440 | 1.03k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC const>(hb_blob_t*) Line | Count | Source | 408 | 251 | { | 409 | 251 | bool sane; | 410 | | | 411 | 251 | init (blob); | 412 | | | 413 | 251 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 251 | start_processing (); | 416 | | | 417 | 251 | if (unlikely (!start)) | 418 | 5 | { | 419 | 5 | end_processing (); | 420 | 5 | return blob; | 421 | 5 | } | 422 | | | 423 | 246 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 246 | sane = t->sanitize (this); | 426 | | | 427 | 246 | end_processing (); | 428 | | | 429 | 246 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 246 | if (sane) | 431 | 165 | { | 432 | 165 | hb_blob_make_immutable (blob); | 433 | 165 | return blob; | 434 | 165 | } | 435 | 81 | else | 436 | 81 | { | 437 | 81 | hb_blob_destroy (blob); | 438 | 81 | return hb_blob_get_empty (); | 439 | 81 | } | 440 | 246 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf const>(hb_blob_t*) Line | Count | Source | 408 | 7.08k | { | 409 | 7.08k | bool sane; | 410 | | | 411 | 7.08k | init (blob); | 412 | | | 413 | 7.08k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 7.08k | start_processing (); | 416 | | | 417 | 7.08k | if (unlikely (!start)) | 418 | 475 | { | 419 | 475 | end_processing (); | 420 | 475 | return blob; | 421 | 475 | } | 422 | | | 423 | 6.60k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 6.60k | sane = t->sanitize (this); | 426 | | | 427 | 6.60k | end_processing (); | 428 | | | 429 | 6.60k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 6.60k | if (sane) | 431 | 6.60k | { | 432 | 6.60k | hb_blob_make_immutable (blob); | 433 | 6.60k | return blob; | 434 | 6.60k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 6.60k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hdmx const>(hb_blob_t*) Line | Count | Source | 408 | 111 | { | 409 | 111 | bool sane; | 410 | | | 411 | 111 | init (blob); | 412 | | | 413 | 111 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 111 | start_processing (); | 416 | | | 417 | 111 | if (unlikely (!start)) | 418 | 12 | { | 419 | 12 | end_processing (); | 420 | 12 | return blob; | 421 | 12 | } | 422 | | | 423 | 99 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 99 | sane = t->sanitize (this); | 426 | | | 427 | 99 | end_processing (); | 428 | | | 429 | 99 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 99 | if (sane) | 431 | 80 | { | 432 | 80 | hb_blob_make_immutable (blob); | 433 | 80 | return blob; | 434 | 80 | } | 435 | 19 | else | 436 | 19 | { | 437 | 19 | hb_blob_destroy (blob); | 438 | 19 | return hb_blob_get_empty (); | 439 | 19 | } | 440 | 99 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name const>(hb_blob_t*) Line | Count | Source | 408 | 2.87k | { | 409 | 2.87k | bool sane; | 410 | | | 411 | 2.87k | init (blob); | 412 | | | 413 | 2.87k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 2.87k | start_processing (); | 416 | | | 417 | 2.87k | if (unlikely (!start)) | 418 | 210 | { | 419 | 210 | end_processing (); | 420 | 210 | return blob; | 421 | 210 | } | 422 | | | 423 | 2.66k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.66k | sane = t->sanitize (this); | 426 | | | 427 | 2.66k | end_processing (); | 428 | | | 429 | 2.66k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.66k | if (sane) | 431 | 2.19k | { | 432 | 2.19k | hb_blob_make_immutable (blob); | 433 | 2.19k | return blob; | 434 | 2.19k | } | 435 | 476 | else | 436 | 476 | { | 437 | 476 | hb_blob_destroy (blob); | 438 | 476 | return hb_blob_get_empty (); | 439 | 476 | } | 440 | 2.66k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtx const>(hb_blob_t*) Line | Count | Source | 408 | 4.07k | { | 409 | 4.07k | bool sane; | 410 | | | 411 | 4.07k | init (blob); | 412 | | | 413 | 4.07k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 4.07k | start_processing (); | 416 | | | 417 | 4.07k | if (unlikely (!start)) | 418 | 244 | { | 419 | 244 | end_processing (); | 420 | 244 | return blob; | 421 | 244 | } | 422 | | | 423 | 3.83k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 3.83k | sane = t->sanitize (this); | 426 | | | 427 | 3.83k | end_processing (); | 428 | | | 429 | 3.83k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 3.83k | if (sane) | 431 | 3.83k | { | 432 | 3.83k | hb_blob_make_immutable (blob); | 433 | 3.83k | return blob; | 434 | 3.83k | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 3.83k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vmtx const>(hb_blob_t*) Line | Count | Source | 408 | 534 | { | 409 | 534 | bool sane; | 410 | | | 411 | 534 | init (blob); | 412 | | | 413 | 534 | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 534 | start_processing (); | 416 | | | 417 | 534 | if (unlikely (!start)) | 418 | 24 | { | 419 | 24 | end_processing (); | 420 | 24 | return blob; | 421 | 24 | } | 422 | | | 423 | 510 | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 510 | sane = t->sanitize (this); | 426 | | | 427 | 510 | end_processing (); | 428 | | | 429 | 510 | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 510 | if (sane) | 431 | 510 | { | 432 | 510 | hb_blob_make_immutable (blob); | 433 | 510 | return blob; | 434 | 510 | } | 435 | 0 | else | 436 | 0 | { | 437 | 0 | hb_blob_destroy (blob); | 438 | 0 | return hb_blob_get_empty (); | 439 | 0 | } | 440 | 510 | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp const>(hb_blob_t*) Line | Count | Source | 408 | 11.0k | { | 409 | 11.0k | bool sane; | 410 | | | 411 | 11.0k | init (blob); | 412 | | | 413 | 11.0k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 11.0k | start_processing (); | 416 | | | 417 | 11.0k | if (unlikely (!start)) | 418 | 138 | { | 419 | 138 | end_processing (); | 420 | 138 | return blob; | 421 | 138 | } | 422 | | | 423 | 10.8k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 10.8k | sane = t->sanitize (this); | 426 | | | 427 | 10.8k | end_processing (); | 428 | | | 429 | 10.8k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 10.8k | if (sane) | 431 | 9.99k | { | 432 | 9.99k | hb_blob_make_immutable (blob); | 433 | 9.99k | return blob; | 434 | 9.99k | } | 435 | 876 | else | 436 | 876 | { | 437 | 876 | hb_blob_destroy (blob); | 438 | 876 | return hb_blob_get_empty (); | 439 | 876 | } | 440 | 10.8k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap const>(hb_blob_t*) Line | Count | Source | 408 | 7.94k | { | 409 | 7.94k | bool sane; | 410 | | | 411 | 7.94k | init (blob); | 412 | | | 413 | 7.94k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 7.94k | start_processing (); | 416 | | | 417 | 7.94k | if (unlikely (!start)) | 418 | 156 | { | 419 | 156 | end_processing (); | 420 | 156 | return blob; | 421 | 156 | } | 422 | | | 423 | 7.78k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 7.78k | sane = t->sanitize (this); | 426 | | | 427 | 7.78k | end_processing (); | 428 | | | 429 | 7.78k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 7.78k | if (sane) | 431 | 6.94k | { | 432 | 6.94k | hb_blob_make_immutable (blob); | 433 | 6.94k | return blob; | 434 | 6.94k | } | 435 | 842 | else | 436 | 842 | { | 437 | 842 | hb_blob_destroy (blob); | 438 | 842 | return hb_blob_get_empty (); | 439 | 842 | } | 440 | 7.78k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2 const>(hb_blob_t*) Line | Count | Source | 408 | 5.20k | { | 409 | 5.20k | bool sane; | 410 | | | 411 | 5.20k | init (blob); | 412 | | | 413 | 5.20k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 5.20k | start_processing (); | 416 | | | 417 | 5.20k | if (unlikely (!start)) | 418 | 406 | { | 419 | 406 | end_processing (); | 420 | 406 | return blob; | 421 | 406 | } | 422 | | | 423 | 4.79k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 4.79k | sane = t->sanitize (this); | 426 | | | 427 | 4.79k | end_processing (); | 428 | | | 429 | 4.79k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 4.79k | if (sane) | 431 | 4.57k | { | 432 | 4.57k | hb_blob_make_immutable (blob); | 433 | 4.57k | return blob; | 434 | 4.57k | } | 435 | 224 | else | 436 | 224 | { | 437 | 224 | hb_blob_destroy (blob); | 438 | 224 | return hb_blob_get_empty (); | 439 | 224 | } | 440 | 4.79k | } |
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post const>(hb_blob_t*) Line | Count | Source | 408 | 2.90k | { | 409 | 2.90k | bool sane; | 410 | | | 411 | 2.90k | init (blob); | 412 | | | 413 | 2.90k | DEBUG_MSG_FUNC (SANITIZE, start, "start"); | 414 | | | 415 | 2.90k | start_processing (); | 416 | | | 417 | 2.90k | if (unlikely (!start)) | 418 | 608 | { | 419 | 608 | end_processing (); | 420 | 608 | return blob; | 421 | 608 | } | 422 | | | 423 | 2.29k | Type *t = reinterpret_cast<Type *> (const_cast<char *> (start)); | 424 | | | 425 | 2.29k | sane = t->sanitize (this); | 426 | | | 427 | 2.29k | end_processing (); | 428 | | | 429 | 2.29k | DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED"); | 430 | 2.29k | if (sane) | 431 | 2.17k | { | 432 | 2.17k | hb_blob_make_immutable (blob); | 433 | 2.17k | return blob; | 434 | 2.17k | } | 435 | 128 | else | 436 | 128 | { | 437 | 128 | hb_blob_destroy (blob); | 438 | 128 | return hb_blob_get_empty (); | 439 | 128 | } | 440 | 2.29k | } |
|
441 | | |
442 | | template <typename Type> |
443 | | hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag) |
444 | 3.04M | { |
445 | 3.04M | if (!num_glyphs_set) |
446 | 2.10M | set_num_glyphs (hb_face_get_glyph_count (face)); |
447 | 3.04M | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); |
448 | 3.04M | } hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 76.1k | { | 445 | 76.1k | if (!num_glyphs_set) | 446 | 76.1k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 76.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 76.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 98.1k | { | 445 | 98.1k | if (!num_glyphs_set) | 446 | 98.1k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 98.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 98.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::morx>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.1k | { | 445 | 36.1k | if (!num_glyphs_set) | 446 | 36.1k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ltag>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 285 | { | 445 | 285 | if (!num_glyphs_set) | 446 | 285 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 285 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 285 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::mort>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 35.0k | { | 445 | 35.0k | if (!num_glyphs_set) | 446 | 35.0k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 35.0k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 35.0k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::kerx>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.1k | { | 445 | 36.1k | if (!num_glyphs_set) | 446 | 36.1k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ankr>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 1.62k | { | 445 | 1.62k | if (!num_glyphs_set) | 446 | 1.62k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 1.62k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 1.62k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::trak>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.6k | { | 445 | 36.6k | if (!num_glyphs_set) | 446 | 36.6k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.6k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.6k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::feat>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.8k | { | 445 | 36.8k | if (!num_glyphs_set) | 446 | 36.8k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.8k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.8k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 98.0k | { | 445 | 98.0k | if (!num_glyphs_set) | 446 | 98.0k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 98.0k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 98.0k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 22.1k | { | 445 | 22.1k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 22.1k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 22.1k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::loca>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 103k | { | 445 | 103k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 103k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 103k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 103k | { | 445 | 103k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 103k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 103k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 112k | { | 445 | 112k | if (!num_glyphs_set) | 446 | 8.10k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 112k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 112k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 37.4k | { | 445 | 37.4k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 37.4k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 37.4k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 137k | { | 445 | 137k | if (!num_glyphs_set) | 446 | 137k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 137k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 137k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 37.4k | { | 445 | 37.4k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 37.4k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 37.4k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 62.2k | { | 445 | 62.2k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 62.2k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 62.2k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 103k | { | 445 | 103k | if (!num_glyphs_set) | 446 | 103k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 103k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 103k | } |
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 | 444 | 89.6k | { | 445 | 89.6k | if (!num_glyphs_set) | 446 | 89.6k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 89.6k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 89.6k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 89.6k | { | 445 | 89.6k | if (!num_glyphs_set) | 446 | 89.6k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 89.6k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 89.6k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hhea>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 89.5k | { | 445 | 89.5k | if (!num_glyphs_set) | 446 | 3.78k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 89.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 89.5k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vhea>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 85.5k | { | 445 | 85.5k | if (!num_glyphs_set) | 446 | 462 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 85.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 85.5k | } |
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 | 444 | 86.5k | { | 445 | 86.5k | if (!num_glyphs_set) | 446 | 86.5k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 86.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 86.5k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 86.5k | { | 445 | 86.5k | if (!num_glyphs_set) | 446 | 86.5k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 86.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 86.5k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 84.2k | { | 445 | 84.2k | if (!num_glyphs_set) | 446 | 84.2k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 84.2k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 84.2k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 83.9k | { | 445 | 83.9k | if (!num_glyphs_set) | 446 | 83.9k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 83.9k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 83.9k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 111k | { | 445 | 111k | if (!num_glyphs_set) | 446 | 111k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 111k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 111k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 103k | { | 445 | 103k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 103k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 103k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::SVG>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 64.3k | { | 445 | 64.3k | if (!num_glyphs_set) | 446 | 64.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 64.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 64.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 64.3k | { | 445 | 64.3k | if (!num_glyphs_set) | 446 | 64.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 64.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 64.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBDT>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 64.5k | { | 445 | 64.5k | if (!num_glyphs_set) | 446 | 64.5k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 64.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 64.5k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 64.3k | { | 445 | 64.3k | if (!num_glyphs_set) | 446 | 64.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 64.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 64.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff1>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 98.6k | { | 445 | 98.6k | if (!num_glyphs_set) | 446 | 98.6k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 98.6k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 98.6k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff2>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 61.7k | { | 445 | 61.7k | if (!num_glyphs_set) | 446 | 61.7k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 61.7k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 61.7k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::kern>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 34.3k | { | 445 | 34.3k | if (!num_glyphs_set) | 446 | 34.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 34.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 34.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::meta>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.4k | { | 445 | 36.4k | if (!num_glyphs_set) | 446 | 36.4k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.4k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.4k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.3k | { | 445 | 36.3k | if (!num_glyphs_set) | 446 | 36.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.4k | { | 445 | 36.4k | if (!num_glyphs_set) | 446 | 36.4k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.4k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.4k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VARC>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 64.3k | { | 445 | 64.3k | if (!num_glyphs_set) | 446 | 64.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 64.3k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 64.3k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 36.7k | { | 445 | 36.7k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 36.7k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 36.7k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 75.5k | { | 445 | 75.5k | if (!num_glyphs_set) | 446 | 38.7k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 75.5k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 75.5k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 76.2k | { | 445 | 76.2k | if (!num_glyphs_set) | 446 | 39.3k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 76.2k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 76.2k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 83.6k | { | 445 | 83.6k | if (!num_glyphs_set) | 446 | 0 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 83.6k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 83.6k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 2.41k | { | 445 | 2.41k | if (!num_glyphs_set) | 446 | 2.41k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 2.41k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 2.41k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 1.00k | { | 445 | 1.00k | if (!num_glyphs_set) | 446 | 1.00k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 1.00k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 1.00k | } |
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar>(hb_face_t const*, unsigned int) hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 13 | { | 445 | 13 | if (!num_glyphs_set) | 446 | 13 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 13 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 13 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 4 | { | 445 | 4 | if (!num_glyphs_set) | 446 | 4 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 4 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 4 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 9 | { | 445 | 9 | if (!num_glyphs_set) | 446 | 9 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 9 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 9 | } |
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE const>(hb_face_t const*, unsigned int) Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH const>(hb_face_t const*, unsigned int) hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 3.38k | { | 445 | 3.38k | if (!num_glyphs_set) | 446 | 3.38k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 3.38k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 3.38k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 142 | { | 445 | 142 | if (!num_glyphs_set) | 446 | 142 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 142 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 142 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 1.53k | { | 445 | 1.53k | if (!num_glyphs_set) | 446 | 1.53k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 1.53k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 1.53k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 1.00k | { | 445 | 1.00k | if (!num_glyphs_set) | 446 | 1.00k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 1.00k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 1.00k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 178 | { | 445 | 178 | if (!num_glyphs_set) | 446 | 178 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 178 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 178 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 16 | { | 445 | 16 | if (!num_glyphs_set) | 446 | 16 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 16 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 16 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 220 | { | 445 | 220 | if (!num_glyphs_set) | 446 | 220 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 220 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 220 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 352 | { | 445 | 352 | if (!num_glyphs_set) | 446 | 352 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 352 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 352 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 214 | { | 445 | 214 | if (!num_glyphs_set) | 446 | 214 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 214 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 214 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 6.64k | { | 445 | 6.64k | if (!num_glyphs_set) | 446 | 6.64k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 6.64k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 6.64k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 1.07k | { | 445 | 1.07k | if (!num_glyphs_set) | 446 | 1.07k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 1.07k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 1.07k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 251 | { | 445 | 251 | if (!num_glyphs_set) | 446 | 251 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 251 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 251 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 7.08k | { | 445 | 7.08k | if (!num_glyphs_set) | 446 | 7.08k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 7.08k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 7.08k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hdmx const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 111 | { | 445 | 111 | if (!num_glyphs_set) | 446 | 111 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 111 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 111 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 2.87k | { | 445 | 2.87k | if (!num_glyphs_set) | 446 | 2.87k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 2.87k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 2.87k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtx const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 4.07k | { | 445 | 4.07k | if (!num_glyphs_set) | 446 | 4.07k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 4.07k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 4.07k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vmtx const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 534 | { | 445 | 534 | if (!num_glyphs_set) | 446 | 534 | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 534 | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 534 | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 11.0k | { | 445 | 11.0k | if (!num_glyphs_set) | 446 | 11.0k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 11.0k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 11.0k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 7.94k | { | 445 | 7.94k | if (!num_glyphs_set) | 446 | 7.94k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 7.94k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 7.94k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2 const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 5.20k | { | 445 | 5.20k | if (!num_glyphs_set) | 446 | 5.20k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 5.20k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 5.20k | } |
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post const>(hb_face_t const*, unsigned int) Line | Count | Source | 444 | 2.90k | { | 445 | 2.90k | if (!num_glyphs_set) | 446 | 2.90k | set_num_glyphs (hb_face_get_glyph_count (face)); | 447 | 2.90k | return sanitize_blob<Type> (hb_face_reference_table (face, tableTag)); | 448 | 2.90k | } |
|
449 | | |
450 | | const char *start, *end; |
451 | | unsigned length; |
452 | | mutable int max_ops, max_subtables; |
453 | | private: |
454 | | int recursion_depth; |
455 | | bool writable; |
456 | | hb_blob_t *blob; |
457 | | unsigned int num_glyphs; |
458 | | bool num_glyphs_set; |
459 | | public: |
460 | | bool lazy_some_gpos; |
461 | | }; |
462 | | |
463 | | struct hb_sanitize_with_object_t |
464 | | { |
465 | | template <typename T> |
466 | 12.1k | hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c) |
467 | 12.1k | { 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 | 466 | 5.04k | hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c) | 467 | 5.04k | { 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 | 466 | 3.95k | hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c) | 467 | 3.95k | { 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 | 466 | 3.11k | hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c) | 467 | 3.11k | { c->set_object (obj); } |
|
468 | | ~hb_sanitize_with_object_t () |
469 | 12.1k | { c->reset_object (); } |
470 | | |
471 | | private: |
472 | | hb_sanitize_context_t *c; |
473 | | }; |
474 | | |
475 | | |
476 | | #endif /* HB_SANITIZE_HH */ |