Coverage Report

Created: 2026-02-26 06:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
892k
#define HB_SANITIZE_MAX_OPS_MIN 16384
115
#endif
116
#ifndef HB_SANITIZE_MAX_OPS_MAX
117
892k
#define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF
118
#endif
119
#ifndef HB_SANITIZE_MAX_SUBTABLES
120
218k
#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
847k
  start (start_), end (end_),
128
847k
  length (0),
129
847k
  max_ops (0), max_subtables (0),
130
847k
        recursion_depth (0),
131
847k
  writable (false),
132
847k
  blob (nullptr),
133
847k
  num_glyphs (65536),
134
847k
  num_glyphs_set (false),
135
847k
  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
3.47M
  {
141
3.47M
    return format->sanitize (this) &&
142
3.47M
     hb_barrier ();
143
3.47M
  }
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
2.13M
  {
141
2.13M
    return format->sanitize (this) &&
142
2.13M
     hb_barrier ();
143
2.13M
  }
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
25.8k
  {
141
25.8k
    return format->sanitize (this) &&
142
25.8k
     hb_barrier ();
143
25.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
157k
  {
141
157k
    return format->sanitize (this) &&
142
156k
     hb_barrier ();
143
157k
  }
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
56.6k
  {
141
56.6k
    return format->sanitize (this) &&
142
56.4k
     hb_barrier ();
143
56.6k
  }
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
242k
  {
141
242k
    return format->sanitize (this) &&
142
242k
     hb_barrier ();
143
242k
  }
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
32.9k
  {
141
32.9k
    return format->sanitize (this) &&
142
32.9k
     hb_barrier ();
143
32.9k
  }
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
19.1k
  {
141
19.1k
    return format->sanitize (this) &&
142
19.0k
     hb_barrier ();
143
19.1k
  }
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
15.5k
  {
141
15.5k
    return format->sanitize (this) &&
142
15.3k
     hb_barrier ();
143
15.5k
  }
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
37.9k
  {
141
37.9k
    return format->sanitize (this) &&
142
37.8k
     hb_barrier ();
143
37.9k
  }
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
85.3k
  {
141
85.3k
    return format->sanitize (this) &&
142
85.1k
     hb_barrier ();
143
85.3k
  }
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
36.2k
  {
141
36.2k
    return format->sanitize (this) &&
142
36.1k
     hb_barrier ();
143
36.2k
  }
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
3.41k
  {
141
3.41k
    return format->sanitize (this) &&
142
3.41k
     hb_barrier ();
143
3.41k
  }
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
186k
  {
141
186k
    return format->sanitize (this) &&
142
186k
     hb_barrier ();
143
186k
  }
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
62.8k
  {
141
62.8k
    return format->sanitize (this) &&
142
62.7k
     hb_barrier ();
143
62.8k
  }
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
202k
  {
141
202k
    return format->sanitize (this) &&
142
201k
     hb_barrier ();
143
202k
  }
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
47.4k
  {
141
47.4k
    return format->sanitize (this) &&
142
47.3k
     hb_barrier ();
143
47.4k
  }
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
59.9k
  {
141
59.9k
    return format->sanitize (this) &&
142
59.8k
     hb_barrier ();
143
59.9k
  }
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
31.0k
  {
141
31.0k
    return format->sanitize (this) &&
142
31.0k
     hb_barrier ();
143
31.0k
  }
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
38.6k
  {
141
38.6k
    return format->sanitize (this) &&
142
38.5k
     hb_barrier ();
143
38.6k
  }
144
14.3M
  static return_t default_return_value () { return true; }
145
2.43k
  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
218k
  {
150
218k
    max_subtables += count;
151
218k
    return max_subtables < HB_SANITIZE_MAX_SUBTABLES;
152
218k
  }
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
0
  hb_sanitize_context_t (hb_blob_t *b) : hb_sanitize_context_t ()
167
0
  {
168
0
    init (b);
169
170
0
    if (blob)
171
0
      start_processing ();
172
0
  }
173
174
  ~hb_sanitize_context_t ()
175
847k
  {
176
847k
    if (blob)
177
0
      end_processing ();
178
847k
  }
179
180
  void init (hb_blob_t *b)
181
892k
  {
182
892k
    this->blob = hb_blob_reference (b);
183
892k
    this->writable = false;
184
892k
  }
185
186
  void set_num_glyphs (unsigned int num_glyphs_)
187
826k
  {
188
826k
    num_glyphs = num_glyphs_;
189
826k
    num_glyphs_set = true;
190
826k
  }
191
25.9k
  unsigned int get_num_glyphs () { return num_glyphs; }
192
193
0
  void set_max_ops (int max_ops_) { max_ops = max_ops_; }
194
195
  template <typename T>
196
  void set_object (const T *obj)
197
0
  {
198
0
    reset_object ();
199
200
0
    if (!obj) return;
201
202
0
    const char *obj_start = (const char *) obj;
203
0
    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
0
    else
209
0
    {
210
0
      this->start = obj_start;
211
0
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
0
      this->length = this->end - this->start;
213
0
    }
214
0
  }
Unexecuted instantiation: void hb_sanitize_context_t::set_object<AAT::KerxSubTable>(AAT::KerxSubTable const*)
Unexecuted instantiation: void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernOTSubTableHeader> >(OT::KernSubTable<OT::KernOTSubTableHeader> const*)
Unexecuted instantiation: void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernAATSubTableHeader> >(OT::KernSubTable<OT::KernAATSubTableHeader> const*)
215
216
  void reset_object ()
217
892k
  {
218
892k
    if (this->blob)
219
892k
    {
220
892k
      this->start = this->blob->data;
221
892k
      this->end = this->start + this->blob->length;
222
892k
    }
223
892k
    this->length = this->end - this->start;
224
892k
    assert (this->start <= this->end); /* Must not overflow. */
225
892k
  }
226
227
  void start_processing (const char *start_ = nullptr, const char *end_ = nullptr)
228
892k
  {
229
892k
    if (start_)
230
0
    {
231
0
      this->start = start_;
232
0
      this->end = end_;
233
0
    }
234
892k
    reset_object ();
235
892k
    unsigned m;
236
892k
    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
892k
    else
239
892k
      this->max_ops = hb_clamp (m,
240
892k
        (unsigned) HB_SANITIZE_MAX_OPS_MIN,
241
892k
        (unsigned) HB_SANITIZE_MAX_OPS_MAX);
242
892k
    this->debug_depth = 0;
243
892k
    this->recursion_depth = 0;
244
245
892k
    DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1,
246
892k
         "start [%p..%p] (%lu bytes)",
247
892k
         this->start, this->end,
248
892k
         (unsigned long) (this->end - this->start));
249
892k
  }
250
251
  void end_processing ()
252
930k
  {
253
930k
    DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1,
254
930k
         "end [%p..%p]",
255
930k
         this->start, this->end);
256
257
930k
    hb_blob_destroy (this->blob);
258
930k
    this->blob = nullptr;
259
930k
    this->start = this->end = nullptr;
260
930k
    this->length = 0;
261
930k
  }
262
263
  bool check_ops(unsigned count)
264
365k
  {
265
    /* Avoid underflow */
266
365k
    if (unlikely (this->max_ops < 0 || count >= (unsigned) this->max_ops))
267
247
    {
268
247
      this->max_ops = -1;
269
247
      return false;
270
247
    }
271
365k
    this->max_ops -= (int) count;
272
365k
    return true;
273
365k
  }
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
7.81M
  {
281
7.81M
    const char *p = (const char *) base;
282
7.81M
    bool ok = (uintptr_t) (p - this->start) <= this->length &&
283
7.80M
        (unsigned int) (this->end - p) >= len &&
284
7.80M
        ((this->max_ops -= len) > 0);
285
286
7.81M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
287
7.81M
         "check_range [%p..%p]"
288
7.81M
         " (%u bytes) in [%p..%p] -> %s",
289
7.81M
         p, p + len, len,
290
7.81M
         this->start, this->end,
291
7.81M
         ok ? "OK" : "OUT-OF-RANGE");
292
293
7.81M
    return likely (ok);
294
7.81M
  }
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
606M
  {
320
606M
    const char *p = (const char *) base;
321
606M
    bool ok = (uintptr_t) (p - this->start) <= this->length;
322
323
606M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
324
606M
         "check_point [%p]"
325
606M
         " in [%p..%p] -> %s",
326
606M
         p,
327
606M
         this->start, this->end,
328
606M
         ok ? "OK" : "OUT-OF-RANGE");
329
330
606M
    return likely (ok);
331
606M
  }
332
333
  template <typename T>
334
  bool check_range (const T *base,
335
        unsigned int a,
336
        unsigned int b) const
337
814k
  {
338
814k
    unsigned m;
339
814k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
814k
     this->check_range (base, m);
341
814k
  }
bool hb_sanitize_context_t::check_range<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int, unsigned int) const
Line
Count
Source
337
7.35k
  {
338
7.35k
    unsigned m;
339
7.35k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
7.34k
     this->check_range (base, m);
341
7.35k
  }
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
167k
  {
338
167k
    unsigned m;
339
167k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
167k
     this->check_range (base, m);
341
167k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::SettingName>(AAT::SettingName const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::FeatureName>(AAT::FeatureName const*, unsigned int, unsigned int) const
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
3.04k
  {
338
3.04k
    unsigned m;
339
3.04k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.04k
     this->check_range (base, m);
341
3.04k
  }
bool hb_sanitize_context_t::check_range<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Line
Count
Source
337
482
  {
338
482
    unsigned m;
339
482
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
482
     this->check_range (base, m);
341
482
  }
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
15.6k
  {
338
15.6k
    unsigned m;
339
15.6k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
15.6k
     this->check_range (base, m);
341
15.6k
  }
bool hb_sanitize_context_t::check_range<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
12.0k
  {
338
12.0k
    unsigned m;
339
12.0k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
12.0k
     this->check_range (base, m);
341
12.0k
  }
bool hb_sanitize_context_t::check_range<OT::LayerRecord>(OT::LayerRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
11.8k
  {
338
11.8k
    unsigned m;
339
11.8k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
11.8k
     this->check_range (base, m);
341
11.8k
  }
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
1.94k
  {
338
1.94k
    unsigned m;
339
1.94k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.93k
     this->check_range (base, m);
341
1.94k
  }
bool hb_sanitize_context_t::check_range<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
41.1k
  {
338
41.1k
    unsigned m;
339
41.1k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
41.1k
     this->check_range (base, m);
341
41.1k
  }
bool hb_sanitize_context_t::check_range<unsigned char>(unsigned char const*, unsigned int, unsigned int) const
Line
Count
Source
337
36.1k
  {
338
36.1k
    unsigned m;
339
36.1k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
36.1k
     this->check_range (base, m);
341
36.1k
  }
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
3.96k
  {
338
3.96k
    unsigned m;
339
3.96k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.96k
     this->check_range (base, m);
341
3.96k
  }
bool hb_sanitize_context_t::check_range<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
3.91k
  {
338
3.91k
    unsigned m;
339
3.91k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.91k
     this->check_range (base, m);
341
3.91k
  }
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
165k
  {
338
165k
    unsigned m;
339
165k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
165k
     this->check_range (base, m);
341
165k
  }
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
284k
  {
338
284k
    unsigned m;
339
284k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
284k
     this->check_range (base, m);
341
284k
  }
bool hb_sanitize_context_t::check_range<void>(void const*, unsigned int, unsigned int) const
Line
Count
Source
337
7.75k
  {
338
7.75k
    unsigned m;
339
7.75k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
7.72k
     this->check_range (base, m);
341
7.75k
  }
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
865
  {
338
865
    unsigned m;
339
865
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
865
     this->check_range (base, m);
341
865
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_range<OT::NameRecord>(OT::NameRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
6.11k
  {
338
6.11k
    unsigned m;
339
6.11k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
6.11k
     this->check_range (base, m);
341
6.11k
  }
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
96
  {
338
96
    unsigned m;
339
96
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
96
     this->check_range (base, m);
341
96
  }
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
128
  {
338
128
    unsigned m;
339
128
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
128
     this->check_range (base, m);
341
128
  }
bool hb_sanitize_context_t::check_range<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
344
  {
338
344
    unsigned m;
339
344
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
338
     this->check_range (base, m);
341
344
  }
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
690
  {
338
690
    unsigned m;
339
690
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
690
     this->check_range (base, m);
341
690
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Feature>(AAT::Feature const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_range<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
3.53k
  {
338
3.53k
    unsigned m;
339
3.53k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.53k
     this->check_range (base, m);
341
3.53k
  }
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
3.17k
  {
338
3.17k
    unsigned m;
339
3.17k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.17k
     this->check_range (base, m);
341
3.17k
  }
bool hb_sanitize_context_t::check_range<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
4.75k
  {
338
4.75k
    unsigned m;
339
4.75k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4.75k
     this->check_range (base, m);
341
4.75k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int, unsigned int) const
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::AxisRecord>(OT::AxisRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
3.81k
  {
338
3.81k
    unsigned m;
339
3.81k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.81k
     this->check_range (base, m);
341
3.81k
  }
bool hb_sanitize_context_t::check_range<OT::InstanceRecord>(OT::InstanceRecord 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
  }
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
23.1k
  {
338
23.1k
    unsigned m;
339
23.1k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
23.1k
     this->check_range (base, m);
341
23.1k
  }
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
723
  {
338
723
    unsigned m;
339
723
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
723
     this->check_range (base, m);
341
723
  }
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
37.3k
  {
349
37.3k
    unsigned m;
350
37.3k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
37.3k
     this->check_range (base, m, c);
352
37.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, unsigned int) const
Line
Count
Source
348
37.3k
  {
349
37.3k
    unsigned m;
350
37.3k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
37.3k
     this->check_range (base, m, c);
352
37.3k
  }
Unexecuted instantiation: 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
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
4.28M
  {
358
4.28M
    if (len_size >= 4)
359
49.6k
    {
360
49.6k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
194
  return false;
362
49.6k
    }
363
4.23M
    else
364
4.23M
      len = len * hb_static_size (T);
365
4.28M
    return this->check_range (base, len);
366
4.28M
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.21M
  {
358
1.21M
    if (len_size >= 4)
359
588
    {
360
588
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
27
  return false;
362
588
    }
363
1.21M
    else
364
1.21M
      len = len * hb_static_size (T);
365
1.21M
    return this->check_range (base, len);
366
1.21M
  }
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
105k
  {
358
105k
    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
105k
    else
364
105k
      len = len * hb_static_size (T);
365
105k
    return this->check_range (base, len);
366
105k
  }
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int) const
Line
Count
Source
357
39.4k
  {
358
39.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
39.4k
    else
364
39.4k
      len = len * hb_static_size (T);
365
39.4k
    return this->check_range (base, len);
366
39.4k
  }
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
12.6k
  {
358
12.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
12.6k
    else
364
12.6k
      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::NumType<true, unsigned int, 3u> >(OT::NumType<true, unsigned int, 3u> const*, unsigned int, unsigned int) const
Line
Count
Source
357
756
  {
358
756
    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
756
    else
364
756
      len = len * hb_static_size (T);
365
756
    return this->check_range (base, len);
366
756
  }
bool hb_sanitize_context_t::check_array_sized<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Line
Count
Source
357
839k
  {
358
839k
    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
839k
    else
364
839k
      len = len * hb_static_size (T);
365
839k
    return this->check_range (base, len);
366
839k
  }
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
84.1k
  {
358
84.1k
    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
84.1k
    else
364
84.1k
      len = len * hb_static_size (T);
365
84.1k
    return this->check_range (base, len);
366
84.1k
  }
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
42.8k
  {
358
42.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
42.8k
    else
364
42.8k
      len = len * hb_static_size (T);
365
42.8k
    return this->check_range (base, len);
366
42.8k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::SparseVarRegionAxis>(OT::SparseVarRegionAxis const*, unsigned int, unsigned int) const
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
7.46k
  {
358
7.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
7.46k
    else
364
7.46k
      len = len * hb_static_size (T);
365
7.46k
    return this->check_range (base, len);
366
7.46k
  }
Unexecuted instantiation: 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
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
3.78k
  {
358
3.78k
    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.78k
    else
364
3.78k
      len = len * hb_static_size (T);
365
3.78k
    return this->check_range (base, len);
366
3.78k
  }
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
1.65k
  {
358
1.65k
    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.65k
    else
364
1.65k
      len = len * hb_static_size (T);
365
1.65k
    return this->check_range (base, len);
366
1.65k
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.09k
  {
358
1.09k
    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.09k
    else
364
1.09k
      len = len * hb_static_size (T);
365
1.09k
    return this->check_range (base, len);
366
1.09k
  }
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
12
  return false;
362
1.69k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
1.68k
    return this->check_range (base, len);
366
1.69k
  }
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
762
  {
358
762
    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
762
    else
364
762
      len = len * hb_static_size (T);
365
762
    return this->check_range (base, len);
366
762
  }
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
46.8k
  {
358
46.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
46.8k
    else
364
46.8k
      len = len * hb_static_size (T);
365
46.8k
    return this->check_range (base, len);
366
46.8k
  }
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.69k
  {
358
1.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
1.69k
    else
364
1.69k
      len = len * hb_static_size (T);
365
1.69k
    return this->check_range (base, len);
366
1.69k
  }
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
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::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.87k
  {
358
2.87k
    if (len_size >= 4)
359
2.87k
    {
360
2.87k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
13
  return false;
362
2.87k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
2.86k
    return this->check_range (base, len);
366
2.87k
  }
bool hb_sanitize_context_t::check_array_sized<OT::UVSMapping>(OT::UVSMapping const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.45k
  {
358
2.45k
    if (len_size >= 4)
359
2.45k
    {
360
2.45k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
13
  return false;
362
2.45k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
2.44k
    return this->check_range (base, len);
366
2.45k
  }
bool hb_sanitize_context_t::check_array_sized<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.06k
  {
358
2.06k
    if (len_size >= 4)
359
2.06k
    {
360
2.06k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
13
  return false;
362
2.06k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
2.05k
    return this->check_range (base, len);
366
2.06k
  }
bool hb_sanitize_context_t::check_array_sized<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int, unsigned int) const
Line
Count
Source
357
9.83k
  {
358
9.83k
    if (len_size >= 4)
359
9.83k
    {
360
9.83k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
71
  return false;
362
9.83k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
9.76k
    return this->check_range (base, len);
366
9.83k
  }
bool hb_sanitize_context_t::check_array_sized<OT::EncodingRecord>(OT::EncodingRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
43.0k
  {
358
43.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
43.0k
    else
364
43.0k
      len = len * hb_static_size (T);
365
43.0k
    return this->check_range (base, len);
366
43.0k
  }
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
126k
  {
358
126k
    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
126k
    else
364
126k
      len = len * hb_static_size (T);
365
126k
    return this->check_range (base, len);
366
126k
  }
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
31.0k
  {
358
31.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
31.0k
    else
364
31.0k
      len = len * hb_static_size (T);
365
31.0k
    return this->check_range (base, len);
366
31.0k
  }
bool hb_sanitize_context_t::check_array_sized<OT::ClipRecord>(OT::ClipRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.17k
  {
358
1.17k
    if (len_size >= 4)
359
1.17k
    {
360
1.17k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
10
  return false;
362
1.17k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
1.16k
    return this->check_range (base, len);
366
1.17k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
5.34k
  {
358
5.34k
    if (len_size >= 4)
359
5.34k
    {
360
5.34k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
10
  return false;
362
5.34k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
5.33k
    return this->check_range (base, len);
366
5.34k
  }
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
1.32k
  {
358
1.32k
    if (len_size >= 4)
359
1.32k
    {
360
1.32k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
10
  return false;
362
1.32k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
1.31k
    return this->check_range (base, len);
366
1.32k
  }
bool hb_sanitize_context_t::check_array_sized<OT::TableRecord>(OT::TableRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
21.2k
  {
358
21.2k
    if (len_size >= 4)
359
21.2k
    {
360
21.2k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
21.2k
    }
363
0
    else
364
0
      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::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
200
  {
358
200
    if (len_size >= 4)
359
200
    {
360
200
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
3
  return false;
362
200
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
197
    return this->check_range (base, len);
366
200
  }
bool hb_sanitize_context_t::check_array_sized<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
50
  {
358
50
    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
50
    else
364
50
      len = len * hb_static_size (T);
365
50
    return this->check_range (base, len);
366
50
  }
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
860
  {
358
860
    if (len_size >= 4)
359
366
    {
360
366
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
366
    }
363
494
    else
364
494
      len = len * hb_static_size (T);
365
860
    return this->check_range (base, len);
366
860
  }
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
703
  {
358
703
    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
703
    else
364
703
      len = len * hb_static_size (T);
365
703
    return this->check_range (base, len);
366
703
  }
bool hb_sanitize_context_t::check_array_sized<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int, unsigned int) const
Line
Count
Source
357
732
  {
358
732
    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
732
    else
364
732
      len = len * hb_static_size (T);
365
732
    return this->check_range (base, len);
366
732
  }
bool hb_sanitize_context_t::check_array_sized<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int, unsigned int) const
Line
Count
Source
357
734
  {
358
734
    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
734
    else
364
734
      len = len * hb_static_size (T);
365
734
    return this->check_range (base, len);
366
734
  }
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
65
  {
358
65
    if (len_size >= 4)
359
65
    {
360
65
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
3
  return false;
362
65
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
62
    return this->check_range (base, len);
366
65
  }
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
230k
  {
358
230k
    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
230k
    else
364
230k
      len = len * hb_static_size (T);
365
230k
    return this->check_range (base, len);
366
230k
  }
bool hb_sanitize_context_t::check_array_sized<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
596k
  {
358
596k
    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
596k
    else
364
596k
      len = len * hb_static_size (T);
365
596k
    return this->check_range (base, len);
366
596k
  }
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
11.8k
  {
358
11.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
11.8k
    else
364
11.8k
      len = len * hb_static_size (T);
365
11.8k
    return this->check_range (base, len);
366
11.8k
  }
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
15.2k
  {
358
15.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
15.2k
    else
364
15.2k
      len = len * hb_static_size (T);
365
15.2k
    return this->check_range (base, len);
366
15.2k
  }
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
219k
  {
358
219k
    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
219k
    else
364
219k
      len = len * hb_static_size (T);
365
219k
    return this->check_range (base, len);
366
219k
  }
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
72.3k
  {
358
72.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
72.3k
    else
364
72.3k
      len = len * hb_static_size (T);
365
72.3k
    return this->check_range (base, len);
366
72.3k
  }
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
8.07k
  {
358
8.07k
    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.07k
    else
364
8.07k
      len = len * hb_static_size (T);
365
8.07k
    return this->check_range (base, len);
366
8.07k
  }
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
646
  {
358
646
    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
646
    else
364
646
      len = len * hb_static_size (T);
365
646
    return this->check_range (base, len);
366
646
  }
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
3.99k
  {
358
3.99k
    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.99k
    else
364
3.99k
      len = len * hb_static_size (T);
365
3.99k
    return this->check_range (base, len);
366
3.99k
  }
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
6.87k
  {
358
6.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
6.87k
    else
364
6.87k
      len = len * hb_static_size (T);
365
6.87k
    return this->check_range (base, len);
366
6.87k
  }
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
12.5k
  {
358
12.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
12.5k
    else
364
12.5k
      len = len * hb_static_size (T);
365
12.5k
    return this->check_range (base, len);
366
12.5k
  }
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
1.14k
  {
358
1.14k
    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.14k
    else
364
1.14k
      len = len * hb_static_size (T);
365
1.14k
    return this->check_range (base, len);
366
1.14k
  }
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
821
  {
358
821
    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
821
    else
364
821
      len = len * hb_static_size (T);
365
821
    return this->check_range (base, len);
366
821
  }
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
231
  {
358
231
    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
231
    else
364
231
      len = len * hb_static_size (T);
365
231
    return this->check_range (base, len);
366
231
  }
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
9.98k
  {
358
9.98k
    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.98k
    else
364
9.98k
      len = len * hb_static_size (T);
365
9.98k
    return this->check_range (base, len);
366
9.98k
  }
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
18.6k
  {
358
18.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
18.6k
    else
364
18.6k
      len = len * hb_static_size (T);
365
18.6k
    return this->check_range (base, len);
366
18.6k
  }
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
916
  {
358
916
    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
916
    else
364
916
      len = len * hb_static_size (T);
365
916
    return this->check_range (base, len);
366
916
  }
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
503
  {
358
503
    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
503
    else
364
503
      len = len * hb_static_size (T);
365
503
    return this->check_range (base, len);
366
503
  }
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
308
  {
358
308
    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
308
    else
364
308
      len = len * hb_static_size (T);
365
308
    return this->check_range (base, len);
366
308
  }
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
36.6k
  {
358
36.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
36.6k
    else
364
36.6k
      len = len * hb_static_size (T);
365
36.6k
    return this->check_range (base, len);
366
36.6k
  }
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
33.9k
  {
358
33.9k
    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.9k
    else
364
33.9k
      len = len * hb_static_size (T);
365
33.9k
    return this->check_range (base, len);
366
33.9k
  }
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
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::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
178
  {
358
178
    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
178
    else
364
178
      len = len * hb_static_size (T);
365
178
    return this->check_range (base, len);
366
178
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::Anchor>(AAT::Anchor const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::KernPair>(AAT::KernPair const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::DataMap>(OT::DataMap const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int, unsigned int) const
Line
Count
Source
357
248
  {
358
248
    if (len_size >= 4)
359
248
    {
360
248
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
3
  return false;
362
248
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
245
    return this->check_range (base, len);
366
248
  }
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
160
  {
358
160
    if (len_size >= 4)
359
160
    {
360
160
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
6
  return false;
362
160
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
154
    return this->check_range (base, len);
366
160
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int, unsigned int) const
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
146k
  {
358
146k
    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
146k
    else
364
146k
      len = len * hb_static_size (T);
365
146k
    return this->check_range (base, len);
366
146k
  }
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
16.2k
  {
358
16.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
16.2k
    else
364
16.2k
      len = len * hb_static_size (T);
365
16.2k
    return this->check_range (base, len);
366
16.2k
  }
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
2.11k
  {
358
2.11k
    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.11k
    else
364
2.11k
      len = len * hb_static_size (T);
365
2.11k
    return this->check_range (base, len);
366
2.11k
  }
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
11.2k
  {
358
11.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
11.2k
    else
364
11.2k
      len = len * hb_static_size (T);
365
11.2k
    return this->check_range (base, len);
366
11.2k
  }
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.23k
  {
358
5.23k
    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.23k
    else
364
5.23k
      len = len * hb_static_size (T);
365
5.23k
    return this->check_range (base, len);
366
5.23k
  }
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
19.0k
  {
358
19.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
19.0k
    else
364
19.0k
      len = len * hb_static_size (T);
365
19.0k
    return this->check_range (base, len);
366
19.0k
  }
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
64.4k
  {
358
64.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
64.4k
    else
364
64.4k
      len = len * hb_static_size (T);
365
64.4k
    return this->check_range (base, len);
366
64.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
1.13k
  {
358
1.13k
    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.13k
    else
364
1.13k
      len = len * hb_static_size (T);
365
1.13k
    return this->check_range (base, len);
366
1.13k
  }
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
516
  {
358
516
    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
516
    else
364
516
      len = len * hb_static_size (T);
365
516
    return this->check_range (base, len);
366
516
  }
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
20.1k
  {
358
20.1k
    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
20.1k
    else
364
20.1k
      len = len * hb_static_size (T);
365
20.1k
    return this->check_range (base, len);
366
20.1k
  }
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
109
  {
358
109
    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
109
    else
364
109
      len = len * hb_static_size (T);
365
109
    return this->check_range (base, len);
366
109
  }
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::AxisValueMap>(OT::AxisValueMap const*, unsigned int, unsigned int) const
Line
Count
Source
357
308
  {
358
308
    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
308
    else
364
308
      len = len * hb_static_size (T);
365
308
    return this->check_range (base, len);
366
308
  }
bool hb_sanitize_context_t::check_array_sized<OT::VertOriginMetric>(OT::VertOriginMetric const*, unsigned int, unsigned int) const
Line
Count
Source
357
261
  {
358
261
    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
261
    else
364
261
      len = len * hb_static_size (T);
365
261
    return this->check_range (base, len);
366
261
  }
bool hb_sanitize_context_t::check_array_sized<OT::Tag>(OT::Tag const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.06k
  {
358
1.06k
    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.06k
    else
364
1.06k
      len = len * hb_static_size (T);
365
1.06k
    return this->check_range (base, len);
366
1.06k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.12k
  {
358
1.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
1.12k
    else
364
1.12k
      len = len * hb_static_size (T);
365
1.12k
    return this->check_range (base, len);
366
1.12k
  }
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
3.82k
  {
358
3.82k
    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.82k
    else
364
3.82k
      len = len * hb_static_size (T);
365
3.82k
    return this->check_range (base, len);
366
3.82k
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
673
  {
358
673
    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
673
    else
364
673
      len = len * hb_static_size (T);
365
673
    return this->check_range (base, len);
366
673
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseLangSysRecord>(OT::BaseLangSysRecord 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
  }
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::GaspRange>(OT::GaspRange 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.10k
  {
358
1.10k
    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.10k
    else
364
1.10k
      len = len * hb_static_size (T);
365
1.10k
    return this->check_range (base, len);
366
1.10k
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
504
  {
358
504
    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
504
    else
364
504
      len = len * hb_static_size (T);
365
504
    return this->check_range (base, len);
366
504
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
10.7k
  {
358
10.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
10.7k
    else
364
10.7k
      len = len * hb_static_size (T);
365
10.7k
    return this->check_range (base, len);
366
10.7k
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
12.4k
  {
358
12.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
12.4k
    else
364
12.4k
      len = len * hb_static_size (T);
365
12.4k
    return this->check_range (base, len);
366
12.4k
  }
367
368
  template <typename T>
369
  bool check_array (const T *base, unsigned int len) const
370
452k
  {
371
452k
    return this->check_range (base, len, hb_static_size (T));
372
452k
  }
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
113k
  {
371
113k
    return this->check_range (base, len, hb_static_size (T));
372
113k
  }
bool hb_sanitize_context_t::check_array<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int) const
Line
Count
Source
370
7.35k
  {
371
7.35k
    return this->check_range (base, len, hb_static_size (T));
372
7.35k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::SettingName>(AAT::SettingName const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::FeatureName>(AAT::FeatureName const*, unsigned int) const
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
3.04k
  {
371
3.04k
    return this->check_range (base, len, hb_static_size (T));
372
3.04k
  }
bool hb_sanitize_context_t::check_array<OT::Index>(OT::Index const*, unsigned int) const
Line
Count
Source
370
482
  {
371
482
    return this->check_range (base, len, hb_static_size (T));
372
482
  }
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
4.53k
  {
371
4.53k
    return this->check_range (base, len, hb_static_size (T));
372
4.53k
  }
bool hb_sanitize_context_t::check_array<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int) const
Line
Count
Source
370
12.0k
  {
371
12.0k
    return this->check_range (base, len, hb_static_size (T));
372
12.0k
  }
bool hb_sanitize_context_t::check_array<OT::LayerRecord>(OT::LayerRecord const*, unsigned int) const
Line
Count
Source
370
11.8k
  {
371
11.8k
    return this->check_range (base, len, hb_static_size (T));
372
11.8k
  }
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
1.94k
  {
371
1.94k
    return this->check_range (base, len, hb_static_size (T));
372
1.94k
  }
bool hb_sanitize_context_t::check_array<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int) const
Line
Count
Source
370
41.1k
  {
371
41.1k
    return this->check_range (base, len, hb_static_size (T));
372
41.1k
  }
bool hb_sanitize_context_t::check_array<unsigned char>(unsigned char const*, unsigned int) const
Line
Count
Source
370
36.1k
  {
371
36.1k
    return this->check_range (base, len, hb_static_size (T));
372
36.1k
  }
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
3.96k
  {
371
3.96k
    return this->check_range (base, len, hb_static_size (T));
372
3.96k
  }
bool hb_sanitize_context_t::check_array<OT::LookupRecord>(OT::LookupRecord const*, unsigned int) const
Line
Count
Source
370
3.91k
  {
371
3.91k
    return this->check_range (base, len, hb_static_size (T));
372
3.91k
  }
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
165k
  {
371
165k
    return this->check_range (base, len, hb_static_size (T));
372
165k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int) const
bool hb_sanitize_context_t::check_array<OT::NameRecord>(OT::NameRecord const*, unsigned int) const
Line
Count
Source
370
6.11k
  {
371
6.11k
    return this->check_range (base, len, hb_static_size (T));
372
6.11k
  }
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
96
  {
371
96
    return this->check_range (base, len, hb_static_size (T));
372
96
  }
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
128
  {
371
128
    return this->check_range (base, len, hb_static_size (T));
372
128
  }
bool hb_sanitize_context_t::check_array<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int) const
Line
Count
Source
370
344
  {
371
344
    return this->check_range (base, len, hb_static_size (T));
372
344
  }
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
690
  {
371
690
    return this->check_range (base, len, hb_static_size (T));
372
690
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Feature>(AAT::Feature const*, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_array<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int) const
Line
Count
Source
370
3.53k
  {
371
3.53k
    return this->check_range (base, len, hb_static_size (T));
372
3.53k
  }
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
3.17k
  {
371
3.17k
    return this->check_range (base, len, hb_static_size (T));
372
3.17k
  }
bool hb_sanitize_context_t::check_array<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int) const
Line
Count
Source
370
4.75k
  {
371
4.75k
    return this->check_range (base, len, hb_static_size (T));
372
4.75k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int) const
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::AxisRecord>(OT::AxisRecord const*, unsigned int) const
Line
Count
Source
370
3.81k
  {
371
3.81k
    return this->check_range (base, len, hb_static_size (T));
372
3.81k
  }
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
23.1k
  {
371
23.1k
    return this->check_range (base, len, hb_static_size (T));
372
23.1k
  }
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
723
  {
371
723
    return this->check_range (base, len, hb_static_size (T));
372
723
  }
373
374
  template <typename T>
375
  bool check_array (const T *base,
376
        unsigned int a,
377
        unsigned int b) const
378
37.3k
  {
379
37.3k
    return this->check_range (base, hb_static_size (T), a, b);
380
37.3k
  }
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
37.3k
  {
379
37.3k
    return this->check_range (base, hb_static_size (T), a, b);
380
37.3k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
381
382
  bool check_start_recursion (int max_depth)
383
2.13M
  {
384
2.13M
    if (unlikely (recursion_depth >= max_depth)) return false;
385
2.13M
    return ++recursion_depth;
386
2.13M
  }
387
388
  bool end_recursion (bool result)
389
2.13M
  {
390
2.13M
    recursion_depth--;
391
2.13M
    return result;
392
2.13M
  }
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
606M
  {
400
606M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
606M
    else
403
606M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
606M
  }
bool hb_sanitize_context_t::check_struct<OT::maxp>(OT::maxp const*) const
Line
Count
Source
399
28.1k
  {
400
28.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
28.1k
    else
403
28.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
28.1k
  }
bool hb_sanitize_context_t::check_struct<OT::maxpV1Tail>(OT::maxpV1Tail const*) const
Line
Count
Source
399
19.9k
  {
400
19.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19.9k
    else
403
19.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19.9k
  }
bool hb_sanitize_context_t::check_struct<OT::head>(OT::head const*) const
Line
Count
Source
399
13.5k
  {
400
13.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.5k
    else
403
13.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.5k
  }
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::VarSizedBinSearchHeader>(OT::VarSizedBinSearchHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::FTStringRange>(AAT::FTStringRange const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ltag>(AAT::ltag const*) const
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
50.0k
  {
400
50.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
50.0k
    else
403
50.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
50.0k
  }
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
187M
  {
400
187M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
187M
    else
403
187M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
187M
  }
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
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
7.39k
  {
400
7.39k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.39k
    else
403
7.39k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.39k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*) const
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsSize>(OT::FeatureParamsSize const*) const
Line
Count
Source
399
560
  {
400
560
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
560
    else
403
560
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
560
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsStylisticSet>(OT::FeatureParamsStylisticSet const*) const
Line
Count
Source
399
5.79k
  {
400
5.79k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.79k
    else
403
5.79k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.79k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsCharacterVariants>(OT::FeatureParamsCharacterVariants const*) const
Line
Count
Source
399
764
  {
400
764
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
764
    else
403
764
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
764
  }
bool hb_sanitize_context_t::check_struct<OT::Feature>(OT::Feature 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::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
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::LangSys>(OT::LangSys const*) const
Line
Count
Source
399
733k
  {
400
733k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
733k
    else
403
733k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
733k
  }
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
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::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*) const
Line
Count
Source
399
12.9M
  {
400
12.9M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.9M
    else
403
12.9M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.9M
  }
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
7.77k
  {
400
7.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.77k
    else
403
7.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.77k
  }
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
331
  {
400
331
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
331
    else
403
331
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
331
  }
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::VarRegionList>(OT::VarRegionList const*) const
Line
Count
Source
399
7.48k
  {
400
7.48k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.48k
    else
403
7.48k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.48k
  }
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::VarData>(OT::VarData const*) const
Line
Count
Source
399
14.1k
  {
400
14.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.1k
    else
403
14.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.1k
  }
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
2.21M
  {
400
2.21M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.21M
    else
403
2.21M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.21M
  }
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
7.77k
  {
400
7.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.77k
    else
403
7.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.77k
  }
bool hb_sanitize_context_t::check_struct<OT::ItemVariationStore>(OT::ItemVariationStore const*) const
Line
Count
Source
399
8.18k
  {
400
8.18k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.18k
    else
403
8.18k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.18k
  }
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
7.68k
  {
400
7.68k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.68k
    else
403
7.68k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.68k
  }
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
14.4k
  {
400
14.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.4k
    else
403
14.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.4k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MultiItemVariationStore>(OT::MultiItemVariationStore const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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
2.98k
  {
400
2.98k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.98k
    else
403
2.98k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.98k
  }
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
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::ConditionAxisRange>(OT::ConditionAxisRange const*) const
Line
Count
Source
399
3.25k
  {
400
3.25k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.25k
    else
403
3.25k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.25k
  }
bool hb_sanitize_context_t::check_struct<OT::ConditionValue>(OT::ConditionValue const*) const
Line
Count
Source
399
941
  {
400
941
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
941
    else
403
941
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
941
  }
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
47.6k
  {
400
47.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
47.6k
    else
403
47.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
47.6k
  }
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
3.48k
  {
400
3.48k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.48k
    else
403
3.48k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.48k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*) const
Line
Count
Source
399
2.21k
  {
400
2.21k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.21k
    else
403
2.21k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.21k
  }
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.21k
  {
400
2.21k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.21k
    else
403
2.21k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.21k
  }
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
79.7k
  {
400
79.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
79.7k
    else
403
79.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
79.7k
  }
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
2.52k
  {
400
2.52k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.52k
    else
403
2.52k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.52k
  }
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.09k
  {
400
2.09k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.09k
    else
403
2.09k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.09k
  }
bool hb_sanitize_context_t::check_struct<OT::HintingDevice>(OT::HintingDevice const*) const
Line
Count
Source
399
2.30M
  {
400
2.30M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.30M
    else
403
2.30M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.30M
  }
bool hb_sanitize_context_t::check_struct<OT::VariationDevice>(OT::VariationDevice const*) const
Line
Count
Source
399
485k
  {
400
485k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
485k
    else
403
485k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
485k
  }
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
1.14M
  {
400
1.14M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.14M
    else
403
1.14M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.14M
  }
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
22.7k
  {
400
22.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
22.7k
    else
403
22.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
22.7k
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat1>(OT::CaretValueFormat1 const*) const
Line
Count
Source
399
3.21M
  {
400
3.21M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.21M
    else
403
3.21M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.21M
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat2>(OT::CaretValueFormat2 const*) const
Line
Count
Source
399
1.65M
  {
400
1.65M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.65M
    else
403
1.65M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.65M
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat3>(OT::CaretValueFormat3 const*) const
Line
Count
Source
399
654k
  {
400
654k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
654k
    else
403
654k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
654k
  }
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
28.2M
  {
400
28.2M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
28.2M
    else
403
28.2M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
28.2M
  }
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
108M
  {
400
108M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
108M
    else
403
108M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
108M
  }
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
55.0k
  {
400
55.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
55.0k
    else
403
55.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
55.0k
  }
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
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::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
45.0k
  {
400
45.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
45.0k
    else
403
45.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
45.0k
  }
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
6.02k
  {
400
6.02k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.02k
    else
403
6.02k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.02k
  }
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
5.75k
  {
400
5.75k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.75k
    else
403
5.75k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.75k
  }
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
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::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
2.68k
  {
400
2.68k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.68k
    else
403
2.68k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.68k
  }
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
128
  {
400
128
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
128
    else
403
128
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
128
  }
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
101
  {
400
101
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
101
    else
403
101
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
101
  }
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
55
  {
400
55
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
55
    else
403
55
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
55
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Entry<void> >(AAT::Entry<void> const*) const
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
63
  {
400
63
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
63
    else
403
63
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
63
  }
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::FeatureName>(AAT::FeatureName const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::feat>(AAT::feat const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VariationValueRecord>(OT::VariationValueRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MVAR>(OT::MVAR const*) const
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::OS2V1Tail>(OT::OS2V1Tail const*) const
Line
Count
Source
399
5.12k
  {
400
5.12k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.12k
    else
403
5.12k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.12k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V2Tail>(OT::OS2V2Tail const*) const
Line
Count
Source
399
4.96k
  {
400
4.96k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.96k
    else
403
4.96k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.96k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V5Tail>(OT::OS2V5Tail 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::OS2>(OT::OS2 const*) const
Line
Count
Source
399
5.51k
  {
400
5.51k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.51k
    else
403
5.51k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.51k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat0>(OT::CmapSubtableFormat0 const*) const
Line
Count
Source
399
7.08k
  {
400
7.08k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.08k
    else
403
7.08k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.08k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat4>(OT::CmapSubtableFormat4 const*) const
Line
Count
Source
399
56.4k
  {
400
56.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
56.4k
    else
403
56.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
56.4k
  }
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
6.49k
  {
400
6.49k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.49k
    else
403
6.49k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.49k
  }
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
6.49k
  {
400
6.49k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.49k
    else
403
6.49k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.49k
  }
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
6.39k
  {
400
6.39k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.39k
    else
403
6.39k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.39k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14>(OT::CmapSubtableFormat14 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::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > >(OT::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
1.39k
  {
400
1.39k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.39k
    else
403
1.39k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.39k
  }
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
603
  {
400
603
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
603
    else
403
603
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
603
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> const*) const
Line
Count
Source
399
8.08k
  {
400
8.08k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.08k
    else
403
8.08k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.08k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> const*) const
Line
Count
Source
399
1.77k
  {
400
1.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.77k
    else
403
1.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.77k
  }
bool hb_sanitize_context_t::check_struct<OT::EncodingRecord>(OT::EncodingRecord const*) const
Line
Count
Source
399
88.2k
  {
400
88.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
88.2k
    else
403
88.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
88.2k
  }
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
88.2k
  {
400
88.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
88.2k
    else
403
88.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
88.2k
  }
bool hb_sanitize_context_t::check_struct<OT::cmap>(OT::cmap const*) const
Line
Count
Source
399
45.4k
  {
400
45.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
45.4k
    else
403
45.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
45.4k
  }
bool hb_sanitize_context_t::check_struct<OT::CPALV1Tail>(OT::CPALV1Tail const*) const
Line
Count
Source
399
1.03k
  {
400
1.03k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.03k
    else
403
1.03k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.03k
  }
bool hb_sanitize_context_t::check_struct<OT::CPAL>(OT::CPAL const*) const
Line
Count
Source
399
1.74k
  {
400
1.74k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.74k
    else
403
1.74k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.74k
  }
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
53.0k
  {
400
53.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
53.0k
    else
403
53.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
53.0k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintColrLayers>(OT::PaintColrLayers const*) const
Line
Count
Source
399
83.0k
  {
400
83.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
83.0k
    else
403
83.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
83.0k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSolid>(OT::PaintSolid const*) const
Line
Count
Source
399
289k
  {
400
289k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
289k
    else
403
289k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
289k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintGlyph>(OT::PaintGlyph const*) const
Line
Count
Source
399
433k
  {
400
433k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
433k
    else
403
433k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
433k
  }
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
1.74M
  {
400
1.74M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.74M
    else
403
1.74M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.74M
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSolid> >(OT::NoVariable<OT::PaintSolid> const*) const
Line
Count
Source
399
277k
  {
400
277k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
277k
    else
403
277k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
277k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSolid> >(OT::Variable<OT::PaintSolid> const*) const
Line
Count
Source
399
12.1k
  {
400
12.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.1k
    else
403
12.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.1k
  }
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
42.1k
  {
400
42.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
42.1k
    else
403
42.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
42.1k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::NoVariable> >(OT::PaintLinearGradient<OT::NoVariable> const*) const
Line
Count
Source
399
42.1k
  {
400
42.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
42.1k
    else
403
42.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
42.1k
  }
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
136k
  {
400
136k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
136k
    else
403
136k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
136k
  }
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::NoVariable> >(OT::ColorLine<OT::NoVariable> 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
  }
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
3.11k
  {
400
3.11k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.11k
    else
403
3.11k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.11k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::Variable> >(OT::PaintLinearGradient<OT::Variable> const*) const
Line
Count
Source
399
3.11k
  {
400
3.11k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.11k
    else
403
3.11k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.11k
  }
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
34.3k
  {
400
34.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
34.3k
    else
403
34.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
34.3k
  }
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::Variable> >(OT::ColorLine<OT::Variable> const*) const
Line
Count
Source
399
31.0k
  {
400
31.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31.0k
    else
403
31.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31.0k
  }
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
14.9k
  {
400
14.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.9k
    else
403
14.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.9k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::NoVariable> >(OT::PaintRadialGradient<OT::NoVariable> const*) const
Line
Count
Source
399
14.9k
  {
400
14.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.9k
    else
403
14.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.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
2.77k
  {
400
2.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.77k
    else
403
2.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.77k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::Variable> >(OT::PaintRadialGradient<OT::Variable> const*) const
Line
Count
Source
399
2.77k
  {
400
2.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.77k
    else
403
2.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.77k
  }
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
79.3k
  {
400
79.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
79.3k
    else
403
79.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
79.3k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::NoVariable> >(OT::PaintSweepGradient<OT::NoVariable> const*) const
Line
Count
Source
399
79.3k
  {
400
79.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
79.3k
    else
403
79.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
79.3k
  }
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
28.4k
  {
400
28.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
28.4k
    else
403
28.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
28.4k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::Variable> >(OT::PaintSweepGradient<OT::Variable> const*) const
Line
Count
Source
399
28.4k
  {
400
28.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
28.4k
    else
403
28.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
28.4k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::NoVariable> >(OT::PaintTransform<OT::NoVariable> const*) const
Line
Count
Source
399
55.1k
  {
400
55.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
55.1k
    else
403
55.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
55.1k
  }
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
54.7k
  {
400
54.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
54.7k
    else
403
54.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
54.7k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::Affine2x3> >(OT::NoVariable<OT::Affine2x3> const*) const
Line
Count
Source
399
52.1k
  {
400
52.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
52.1k
    else
403
52.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
52.1k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::Variable> >(OT::PaintTransform<OT::Variable> const*) const
Line
Count
Source
399
2.39k
  {
400
2.39k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.39k
    else
403
2.39k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.39k
  }
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
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::Variable<OT::Affine2x3> >(OT::Variable<OT::Affine2x3> const*) const
Line
Count
Source
399
958
  {
400
958
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
958
    else
403
958
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
958
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintTranslate> >(OT::NoVariable<OT::PaintTranslate> const*) const
Line
Count
Source
399
25.9k
  {
400
25.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
25.9k
    else
403
25.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
25.9k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintTranslate> >(OT::Variable<OT::PaintTranslate> const*) const
Line
Count
Source
399
49.3k
  {
400
49.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
49.3k
    else
403
49.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
49.3k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScale> >(OT::NoVariable<OT::PaintScale> const*) const
Line
Count
Source
399
41.6k
  {
400
41.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.6k
    else
403
41.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScale> >(OT::Variable<OT::PaintScale> 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::NoVariable<OT::PaintScaleAroundCenter> >(OT::NoVariable<OT::PaintScaleAroundCenter> const*) const
Line
Count
Source
399
7.71k
  {
400
7.71k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.71k
    else
403
7.71k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.71k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleAroundCenter> >(OT::Variable<OT::PaintScaleAroundCenter> const*) const
Line
Count
Source
399
52.7k
  {
400
52.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
52.7k
    else
403
52.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
52.7k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniform> >(OT::NoVariable<OT::PaintScaleUniform> const*) const
Line
Count
Source
399
38.6k
  {
400
38.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
38.6k
    else
403
38.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
38.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniform> >(OT::Variable<OT::PaintScaleUniform> const*) const
Line
Count
Source
399
86.1k
  {
400
86.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
86.1k
    else
403
86.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
86.1k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniformAroundCenter> >(OT::NoVariable<OT::PaintScaleUniformAroundCenter> const*) const
Line
Count
Source
399
91.5k
  {
400
91.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
91.5k
    else
403
91.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
91.5k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniformAroundCenter> >(OT::Variable<OT::PaintScaleUniformAroundCenter> const*) const
Line
Count
Source
399
5.59k
  {
400
5.59k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.59k
    else
403
5.59k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.59k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotate> >(OT::NoVariable<OT::PaintRotate> 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::Variable<OT::PaintRotate> >(OT::Variable<OT::PaintRotate> const*) const
Line
Count
Source
399
59.6k
  {
400
59.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
59.6k
    else
403
59.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
59.6k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotateAroundCenter> >(OT::NoVariable<OT::PaintRotateAroundCenter> const*) const
Line
Count
Source
399
37.6k
  {
400
37.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
37.6k
    else
403
37.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
37.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotateAroundCenter> >(OT::Variable<OT::PaintRotateAroundCenter> const*) const
Line
Count
Source
399
4.18k
  {
400
4.18k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.18k
    else
403
4.18k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.18k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkew> >(OT::NoVariable<OT::PaintSkew> const*) const
Line
Count
Source
399
32.6k
  {
400
32.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
32.6k
    else
403
32.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
32.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkew> >(OT::Variable<OT::PaintSkew> 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::NoVariable<OT::PaintSkewAroundCenter> >(OT::NoVariable<OT::PaintSkewAroundCenter> const*) const
Line
Count
Source
399
7.24k
  {
400
7.24k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.24k
    else
403
7.24k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.24k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkewAroundCenter> >(OT::Variable<OT::PaintSkewAroundCenter> const*) const
Line
Count
Source
399
48.4k
  {
400
48.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
48.4k
    else
403
48.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
48.4k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintColrGlyph>(OT::PaintColrGlyph const*) const
Line
Count
Source
399
13.5k
  {
400
13.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.5k
    else
403
13.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.5k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTranslate>(OT::PaintTranslate const*) const
Line
Count
Source
399
75.3k
  {
400
75.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
75.3k
    else
403
75.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
75.3k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScale>(OT::PaintScale const*) const
Line
Count
Source
399
65.0k
  {
400
65.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
65.0k
    else
403
65.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
65.0k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleAroundCenter>(OT::PaintScaleAroundCenter const*) const
Line
Count
Source
399
60.4k
  {
400
60.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60.4k
    else
403
60.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60.4k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniform>(OT::PaintScaleUniform const*) const
Line
Count
Source
399
124k
  {
400
124k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
124k
    else
403
124k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
124k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniformAroundCenter>(OT::PaintScaleUniformAroundCenter const*) const
Line
Count
Source
399
97.1k
  {
400
97.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
97.1k
    else
403
97.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
97.1k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRotate>(OT::PaintRotate const*) const
Line
Count
Source
399
69.2k
  {
400
69.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
69.2k
    else
403
69.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
69.2k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRotateAroundCenter>(OT::PaintRotateAroundCenter const*) const
Line
Count
Source
399
41.8k
  {
400
41.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.8k
    else
403
41.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.8k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSkew>(OT::PaintSkew const*) const
Line
Count
Source
399
44.3k
  {
400
44.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
44.3k
    else
403
44.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
44.3k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSkewAroundCenter>(OT::PaintSkewAroundCenter const*) const
Line
Count
Source
399
55.7k
  {
400
55.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
55.7k
    else
403
55.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
55.7k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintComposite>(OT::PaintComposite 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::ClipBoxFormat1>(OT::ClipBoxFormat1 const*) const
Line
Count
Source
399
18.0k
  {
400
18.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.0k
    else
403
18.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.0k
  }
bool hb_sanitize_context_t::check_struct<OT::ClipRecord>(OT::ClipRecord const*) const
Line
Count
Source
399
26.2k
  {
400
26.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
26.2k
    else
403
26.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
26.2k
  }
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
26.2k
  {
400
26.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
26.2k
    else
403
26.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
26.2k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ClipBoxFormat1> >(OT::Variable<OT::ClipBoxFormat1> const*) const
Line
Count
Source
399
230
  {
400
230
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
230
    else
403
230
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
230
  }
bool hb_sanitize_context_t::check_struct<OT::ClipList>(OT::ClipList 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::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*) const
Line
Count
Source
399
224k
  {
400
224k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
224k
    else
403
224k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
224k
  }
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
463k
  {
400
463k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
463k
    else
403
463k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
463k
  }
bool hb_sanitize_context_t::check_struct<OT::COLR>(OT::COLR const*) const
Line
Count
Source
399
12.1k
  {
400
12.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.1k
    else
403
12.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.1k
  }
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
5.72k
  {
400
5.72k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.72k
    else
403
5.72k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.72k
  }
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
4.61k
  {
400
4.61k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.61k
    else
403
4.61k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.61k
  }
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
4.38k
  {
400
4.38k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.38k
    else
403
4.38k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.38k
  }
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
14.9k
  {
400
14.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.9k
    else
403
14.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.9k
  }
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
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::_hea<OT::hhea> >(OT::_hea<OT::hhea> const*) const
Line
Count
Source
399
11.3k
  {
400
11.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.3k
    else
403
11.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.3k
  }
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::vhea> >(OT::_hea<OT::vhea> const*) const
Line
Count
Source
399
540
  {
400
540
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
540
    else
403
540
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
540
  }
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
2.55k
  {
400
2.55k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.55k
    else
403
2.55k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.55k
  }
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
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
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*) const
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
30
  {
400
30
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30
    else
403
30
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30
  }
bool hb_sanitize_context_t::check_struct<OT::OpenTypeOffsetTable>(OT::OpenTypeOffsetTable const*) const
Line
Count
Source
399
21.3k
  {
400
21.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21.3k
    else
403
21.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21.3k
  }
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
21.2k
  {
400
21.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21.2k
    else
403
21.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21.2k
  }
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
382
  {
400
382
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
382
    else
403
382
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
382
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceForkHeader>(OT::ResourceForkHeader const*) const
Line
Count
Source
399
68
  {
400
68
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
68
    else
403
68
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
68
  }
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
52
  {
400
52
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
52
    else
403
52
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
52
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceMap>(OT::ResourceMap const*) const
Line
Count
Source
399
52
  {
400
52
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
52
    else
403
52
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
52
  }
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
51
  {
400
51
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
51
    else
403
51
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
51
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*) const
Line
Count
Source
399
41.1k
  {
400
41.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.1k
    else
403
41.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.1k
  }
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
41.1k
  {
400
41.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.1k
    else
403
41.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.1k
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceRecord>(OT::ResourceRecord const*) const
Line
Count
Source
399
374
  {
400
374
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
374
    else
403
374
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
374
  }
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
374
  {
400
374
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
374
    else
403
374
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
374
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::TableRecord>(OT::TableRecord const*) const
bool hb_sanitize_context_t::check_struct<CFF::FDSelect0>(CFF::FDSelect0 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<CFF::FDSelect>(CFF::FDSelect 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<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
709
  {
400
709
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
709
    else
403
709
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
709
  }
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
10.7k
  {
400
10.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.7k
    else
403
10.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.7k
  }
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.25k
  {
400
1.25k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.25k
    else
403
1.25k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.25k
  }
bool hb_sanitize_context_t::check_struct<CFF::Charset>(CFF::Charset const*) const
Line
Count
Source
399
3.34k
  {
400
3.34k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.34k
    else
403
3.34k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.34k
  }
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
17.8k
  {
400
17.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
17.8k
    else
403
17.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
17.8k
  }
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
16.0k
  {
400
16.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.0k
    else
403
16.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.0k
  }
bool hb_sanitize_context_t::check_struct<OT::cff1>(OT::cff1 const*) const
Line
Count
Source
399
7.50k
  {
400
7.50k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.50k
    else
403
7.50k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.50k
  }
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
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<CFF::CFF2FDSelect>(CFF::CFF2FDSelect const*) const
Line
Count
Source
399
218
  {
400
218
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
218
    else
403
218
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
218
  }
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
67
  {
400
67
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
67
    else
403
67
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
67
  }
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
628
  {
400
628
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
628
    else
403
628
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
628
  }
bool hb_sanitize_context_t::check_struct<CFF::CFF2ItemVariationStore>(CFF::CFF2ItemVariationStore const*) const
Line
Count
Source
399
885
  {
400
885
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
885
    else
403
885
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
885
  }
bool hb_sanitize_context_t::check_struct<OT::cff2>(OT::cff2 const*) const
Line
Count
Source
399
2.69k
  {
400
2.69k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.69k
    else
403
2.69k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.69k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LookupRecord>(OT::LookupRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::ContextFormat3>(OT::ContextFormat3 const*) const
Line
Count
Source
399
3.98k
  {
400
3.98k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.98k
    else
403
3.98k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.98k
  }
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
35.1M
  {
400
35.1M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
35.1M
    else
403
35.1M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
35.1M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1>(OT::Layout::GPOS_impl::SinglePosFormat1 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::Layout::GPOS_impl::SinglePosFormat2>(OT::Layout::GPOS_impl::SinglePosFormat2 const*) const
Line
Count
Source
399
11.1k
  {
400
11.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.1k
    else
403
11.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.1k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat1>(OT::Layout::GPOS_impl::AnchorFormat1 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::Layout::GPOS_impl::AnchorFormat2>(OT::Layout::GPOS_impl::AnchorFormat2 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::Layout::GPOS_impl::AnchorFormat3>(OT::Layout::GPOS_impl::AnchorFormat3 const*) const
Line
Count
Source
399
369k
  {
400
369k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
369k
    else
403
369k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
369k
  }
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.49M
  {
400
7.49M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.49M
    else
403
7.49M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.49M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix>(OT::Layout::GPOS_impl::AnchorMatrix 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::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
88.2M
  {
400
88.2M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
88.2M
    else
403
88.2M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
88.2M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*) const
Line
Count
Source
399
4.46M
  {
400
4.46M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.46M
    else
403
4.46M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.46M
  }
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
4.46M
  {
400
4.46M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.46M
    else
403
4.46M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.46M
  }
bool hb_sanitize_context_t::check_struct<OT::Lookup>(OT::Lookup 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::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
9.66M
  {
400
9.66M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.66M
    else
403
9.66M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.66M
  }
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
8.11k
  {
400
8.11k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.11k
    else
403
8.11k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.11k
  }
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
316k
  {
400
316k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
316k
    else
403
316k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
316k
  }
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
284k
  {
400
284k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
284k
    else
403
284k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
284k
  }
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
7.34k
  {
400
7.34k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.34k
    else
403
7.34k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.34k
  }
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
679
  {
400
679
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
679
    else
403
679
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
679
  }
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
30.5k
  {
400
30.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30.5k
    else
403
30.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30.5k
  }
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
1.10k
  {
400
1.10k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.10k
    else
403
1.10k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.10k
  }
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
945
  {
400
945
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
945
    else
403
945
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
945
  }
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
590
  {
400
590
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
590
    else
403
590
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
590
  }
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
9.60k
  {
400
9.60k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.60k
    else
403
9.60k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.60k
  }
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
16.7k
  {
400
16.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.7k
    else
403
16.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.7k
  }
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
425k
  {
400
425k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
425k
    else
403
425k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
425k
  }
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
608
  {
400
608
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
608
    else
403
608
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
608
  }
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
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::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
1.70k
  {
400
1.70k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.70k
    else
403
1.70k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.70k
  }
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
4.57k
  {
400
4.57k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.57k
    else
403
4.57k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.57k
  }
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
4.50k
  {
400
4.50k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.50k
    else
403
4.50k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.50k
  }
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
669
  {
400
669
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
669
    else
403
669
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
669
  }
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
576
  {
400
576
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
576
    else
403
576
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
576
  }
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
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::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
1.42k
  {
400
1.42k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.42k
    else
403
1.42k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.42k
  }
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
16.7k
  {
400
16.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.7k
    else
403
16.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.7k
  }
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
776k
  {
400
776k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
776k
    else
403
776k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
776k
  }
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::SmallTypes> >(OT::Rule<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
284k
  {
400
284k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
284k
    else
403
284k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
284k
  }
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
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::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
9.88k
  {
400
9.88k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.88k
    else
403
9.88k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.88k
  }
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::MediumTypes> >(OT::Rule<OT::Layout::MediumTypes> 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::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
757
  {
400
757
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
757
    else
403
757
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
757
  }
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
664k
  {
400
664k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
664k
    else
403
664k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
664k
  }
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
18.2M
  {
400
18.2M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.2M
    else
403
18.2M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.2M
  }
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
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::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
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<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
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::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*) const
Line
Count
Source
399
3.41k
  {
400
3.41k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.41k
    else
403
3.41k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.41k
  }
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
39.3k
  {
400
39.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
39.3k
    else
403
39.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
39.3k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Script> >(OT::Record<OT::Script> const*) const
Line
Count
Source
399
829k
  {
400
829k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
829k
    else
403
829k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
829k
  }
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
829k
  {
400
829k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
829k
    else
403
829k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
829k
  }
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
37.6k
  {
400
37.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
37.6k
    else
403
37.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
37.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*) const
Line
Count
Source
399
115k
  {
400
115k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
115k
    else
403
115k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
115k
  }
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
115k
  {
400
115k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
115k
    else
403
115k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
115k
  }
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
16.6k
  {
400
16.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.6k
    else
403
16.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.6k
  }
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
77.1k
  {
400
77.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
77.1k
    else
403
77.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
77.1k
  }
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.21k
  {
400
2.21k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.21k
    else
403
2.21k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.21k
  }
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
832
  {
400
832
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
832
    else
403
832
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
832
  }
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
670
  {
400
670
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
670
    else
403
670
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
670
  }
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
298
  {
400
298
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
298
    else
403
298
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
298
  }
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
514
  {
400
514
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
514
    else
403
514
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
514
  }
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::ankr>(AAT::ankr const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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::KerxSubTableHeader>(AAT::KerxSubTableHeader const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: 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
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::LookupFormat8<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: 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
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::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: 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
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<AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernOTSubTableHeader>(OT::KernOTSubTableHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernAATSubTableHeader>(OT::KernAATSubTableHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, void> >(AAT::StateTable<AAT::ObsoleteTypes, void> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernOTSubTableHeader> >(OT::KernSubTableFormat3<OT::KernOTSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernAATSubTableHeader> >(OT::KernSubTableFormat3<OT::KernAATSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::DataMap>(OT::DataMap const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::meta>(OT::meta const*) const
bool hb_sanitize_context_t::check_struct<OT::NameRecord>(OT::NameRecord const*) const
Line
Count
Source
399
90.6k
  {
400
90.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
90.6k
    else
403
90.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
90.6k
  }
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
90.6k
  {
400
90.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
90.6k
    else
403
90.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
90.6k
  }
bool hb_sanitize_context_t::check_struct<OT::name>(OT::name const*) const
Line
Count
Source
399
3.35k
  {
400
3.35k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.35k
    else
403
3.35k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.35k
  }
bool hb_sanitize_context_t::check_struct<OT::post>(OT::post const*) const
Line
Count
Source
399
3.28k
  {
400
3.28k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.28k
    else
403
3.28k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.28k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SmallGlyphMetrics>(OT::SmallGlyphMetrics const*) const
bool hb_sanitize_context_t::check_struct<OT::SBitLineMetrics>(OT::SBitLineMetrics const*) const
Line
Count
Source
399
548
  {
400
548
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
548
    else
403
548
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
548
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableHeader>(OT::IndexSubtableHeader const*) const
Line
Count
Source
399
386
  {
400
386
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
386
    else
403
386
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
386
  }
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
96
  {
400
96
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
96
    else
403
96
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
96
  }
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
128
  {
400
128
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
128
    else
403
128
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
128
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*) const
Line
Count
Source
399
502
  {
400
502
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
502
    else
403
502
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
502
  }
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
495
  {
400
495
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
495
    else
403
495
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
495
  }
bool hb_sanitize_context_t::check_struct<OT::BitmapSizeTable>(OT::BitmapSizeTable const*) const
Line
Count
Source
399
344
  {
400
344
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
344
    else
403
344
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
344
  }
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
344
  {
400
344
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
344
    else
403
344
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
344
  }
bool hb_sanitize_context_t::check_struct<OT::CBLC>(OT::CBLC const*) const
Line
Count
Source
399
254
  {
400
254
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
254
    else
403
254
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
254
  }
bool hb_sanitize_context_t::check_struct<OT::CBDT>(OT::CBDT const*) const
Line
Count
Source
399
152
  {
400
152
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
152
    else
403
152
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
152
  }
bool hb_sanitize_context_t::check_struct<OT::SBIXStrike>(OT::SBIXStrike const*) const
Line
Count
Source
399
705
  {
400
705
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
705
    else
403
705
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
705
  }
bool hb_sanitize_context_t::check_struct<OT::sbix>(OT::sbix const*) const
Line
Count
Source
399
167
  {
400
167
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
167
    else
403
167
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
167
  }
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
781
  {
400
781
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
781
    else
403
781
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
781
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVG>(OT::SVG const*) const
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
11.4M
  {
400
11.4M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.4M
    else
403
11.4M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.4M
  }
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
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::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
519
  {
400
519
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
519
    else
403
519
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
519
  }
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
321k
  {
400
321k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
321k
    else
403
321k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
321k
  }
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
2.19k
  {
400
2.19k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.19k
    else
403
2.19k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.19k
  }
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
238k
  {
400
238k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
238k
    else
403
238k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
238k
  }
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
7.83k
  {
400
7.83k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.83k
    else
403
7.83k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.83k
  }
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
66.7k
  {
400
66.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
66.7k
    else
403
66.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
66.7k
  }
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
18.0M
  {
400
18.0M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.0M
    else
403
18.0M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.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
1.10k
  {
400
1.10k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.10k
    else
403
1.10k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.10k
  }
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
12.9k
  {
400
12.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.9k
    else
403
12.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.9k
  }
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
31.0k
  {
400
31.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31.0k
    else
403
31.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31.0k
  }
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
20.2k
  {
400
20.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20.2k
    else
403
20.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20.2k
  }
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
150k
  {
400
150k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
150k
    else
403
150k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
150k
  }
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
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<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
180
  {
400
180
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
180
    else
403
180
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
180
  }
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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::StateTable<AAT::ExtendedTypes, void> >(AAT::StateTable<AAT::ExtendedTypes, void> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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::LookupSegmentArray<OT::HBGlyphID16> >(AAT::LookupSegmentArray<OT::HBGlyphID16> const*) const
Unexecuted instantiation: 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
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::LookupFormat8<OT::HBGlyphID16> >(AAT::LookupFormat8<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::HBGlyphID16> >(AAT::LookupFormat10<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ExtendedTypes> >(AAT::LigatureSubtable<AAT::ExtendedTypes> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ExtendedTypes> >(AAT::InsertionSubtable<AAT::ExtendedTypes> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ObsoleteTypes> >(AAT::LigatureSubtable<AAT::ObsoleteTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ObsoleteTypes> >(AAT::InsertionSubtable<AAT::ObsoleteTypes> const*) const
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::STAT>(OT::STAT const*) const
Line
Count
Source
399
3.99k
  {
400
3.99k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.99k
    else
403
3.99k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.99k
  }
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
3.53k
  {
400
3.53k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.53k
    else
403
3.53k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.53k
  }
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
3.17k
  {
400
3.17k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.17k
    else
403
3.17k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.17k
  }
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
634k
  {
400
634k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
634k
    else
403
634k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
634k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValue>(OT::AxisValue const*) const
Line
Count
Source
399
491k
  {
400
491k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
491k
    else
403
491k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
491k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat1>(OT::AxisValueFormat1 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::AxisValueFormat2>(OT::AxisValueFormat2 const*) const
Line
Count
Source
399
15.7k
  {
400
15.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.7k
    else
403
15.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.7k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat3>(OT::AxisValueFormat3 const*) const
Line
Count
Source
399
6.27k
  {
400
6.27k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.27k
    else
403
6.27k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.27k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat4>(OT::AxisValueFormat4 const*) const
Line
Count
Source
399
4.75k
  {
400
4.75k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.75k
    else
403
4.75k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.75k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::StatAxisRecord>(OT::StatAxisRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueRecord>(OT::AxisValueRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NumType<true, int, 4u> >(OT::NumType<true, int, 4u> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::trak>(AAT::trak const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::TrackData>(AAT::TrackData const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::TrackTableEntry>(AAT::TrackTableEntry const*) const
Unexecuted instantiation: 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
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::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::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
bool hb_sanitize_context_t::check_struct<OT::fvar>(OT::fvar const*) const
Line
Count
Source
399
4.14k
  {
400
4.14k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.14k
    else
403
4.14k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.14k
  }
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
98
  {
400
98
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
98
    else
403
98
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
98
  }
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::VORG>(OT::VORG const*) const
Line
Count
Source
399
284
  {
400
284
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
284
    else
403
284
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
284
  }
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.04k
  {
400
1.04k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.04k
    else
403
1.04k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.04k
  }
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.64k
  {
400
1.64k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.64k
    else
403
1.64k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.64k
  }
bool hb_sanitize_context_t::check_struct<OT::Axis>(OT::Axis const*) const
Line
Count
Source
399
1.37k
  {
400
1.37k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.37k
    else
403
1.37k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.37k
  }
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.35k
  {
400
1.35k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.35k
    else
403
1.35k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.35k
  }
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.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::BaseScriptList>(OT::BaseScriptList 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::BaseScriptRecord>(OT::BaseScriptRecord const*) const
Line
Count
Source
399
4.77k
  {
400
4.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.77k
    else
403
4.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.77k
  }
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
4.77k
  {
400
4.77k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.77k
    else
403
4.77k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.77k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScript>(OT::BaseScript const*) const
Line
Count
Source
399
4.11k
  {
400
4.11k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.11k
    else
403
4.11k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.11k
  }
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
4.09k
  {
400
4.09k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.09k
    else
403
4.09k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.09k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseValues>(OT::BaseValues const*) const
Line
Count
Source
399
3.83k
  {
400
3.83k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.83k
    else
403
3.83k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.83k
  }
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
18.4k
  {
400
18.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.4k
    else
403
18.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.4k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat1>(OT::BaseCoordFormat1 const*) const
Line
Count
Source
399
7.05k
  {
400
7.05k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.05k
    else
403
7.05k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.05k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2>(OT::BaseCoordFormat2 const*) const
Line
Count
Source
399
2.62k
  {
400
2.62k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.62k
    else
403
2.62k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.62k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat3>(OT::BaseCoordFormat3 const*) const
Line
Count
Source
399
6.15k
  {
400
6.15k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.15k
    else
403
6.15k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.15k
  }
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
4.67k
  {
400
4.67k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.67k
    else
403
4.67k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.67k
  }
bool hb_sanitize_context_t::check_struct<OT::MinMax>(OT::MinMax const*) const
Line
Count
Source
399
764
  {
400
764
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
764
    else
403
764
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
764
  }
bool hb_sanitize_context_t::check_struct<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*) const
Line
Count
Source
399
1.58k
  {
400
1.58k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.58k
    else
403
1.58k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.58k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*) const
Line
Count
Source
399
633
  {
400
633
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
633
    else
403
633
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
633
  }
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
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::cvar>(OT::cvar const*) const
Unexecuted instantiation: 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
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.00k
  {
400
1.00k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.00k
    else
403
1.00k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.00k
  }
bool hb_sanitize_context_t::check_struct<OT::MathConstants>(OT::MathConstants const*) const
Line
Count
Source
399
568
  {
400
568
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
568
    else
403
568
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
568
  }
bool hb_sanitize_context_t::check_struct<OT::MathValueRecord>(OT::MathValueRecord const*) const
Line
Count
Source
399
26.8M
  {
400
26.8M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
26.8M
    else
403
26.8M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
26.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
931
  {
400
931
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
931
    else
403
931
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
931
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphInfo>(OT::MathGlyphInfo const*) const
Line
Count
Source
399
861
  {
400
861
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
861
    else
403
861
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
861
  }
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
856
  {
400
856
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
856
    else
403
856
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
856
  }
bool hb_sanitize_context_t::check_struct<OT::MathItalicsCorrectionInfo>(OT::MathItalicsCorrectionInfo const*) const
Line
Count
Source
399
553
  {
400
553
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
553
    else
403
553
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
553
  }
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
811
  {
400
811
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
811
    else
403
811
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
811
  }
bool hb_sanitize_context_t::check_struct<OT::MathTopAccentAttachment>(OT::MathTopAccentAttachment const*) const
Line
Count
Source
399
575
  {
400
575
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
575
    else
403
575
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
575
  }
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
776
  {
400
776
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
776
    else
403
776
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
776
  }
bool hb_sanitize_context_t::check_struct<OT::MathKernInfo>(OT::MathKernInfo const*) const
Line
Count
Source
399
516
  {
400
516
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
516
    else
403
516
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
516
  }
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
1.72M
  {
400
1.72M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.72M
    else
403
1.72M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.72M
  }
bool hb_sanitize_context_t::check_struct<OT::MathKern>(OT::MathKern const*) const
Line
Count
Source
399
23.1k
  {
400
23.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
23.1k
    else
403
23.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
23.1k
  }
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
767
  {
400
767
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
767
    else
403
767
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
767
  }
bool hb_sanitize_context_t::check_struct<OT::MathVariants>(OT::MathVariants const*) const
Line
Count
Source
399
738
  {
400
738
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
738
    else
403
738
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
738
  }
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
377k
  {
400
377k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
377k
    else
403
377k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
377k
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphConstruction>(OT::MathGlyphConstruction const*) const
Line
Count
Source
399
12.6k
  {
400
12.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.6k
    else
403
12.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.6k
  }
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
12.6k
  {
400
12.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.6k
    else
403
12.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.6k
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphAssembly>(OT::MathGlyphAssembly const*) const
Line
Count
Source
399
10.7k
  {
400
10.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.7k
    else
403
10.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.7k
  }
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
bool hb_sanitize_context_t::check_struct<OT::hdmx>(OT::hdmx const*) const
Line
Count
Source
399
119
  {
400
119
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
119
    else
403
119
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
119
  }
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
847k
  {
409
847k
    bool sane;
410
411
847k
    init (blob);
412
413
847k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
847k
    start_processing ();
416
417
847k
    if (unlikely (!start))
418
559k
    {
419
559k
      end_processing ();
420
559k
      return blob;
421
559k
    }
422
423
287k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
287k
    sane = t->sanitize (this);
426
427
287k
    end_processing ();
428
429
287k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
287k
    if (sane)
431
248k
    {
432
248k
      hb_blob_make_immutable (blob);
433
248k
      return blob;
434
248k
    }
435
39.1k
    else
436
39.1k
    {
437
39.1k
      hb_blob_destroy (blob);
438
39.1k
      return hb_blob_get_empty ();
439
39.1k
    }
440
287k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::loca>(hb_blob_t*)
Line
Count
Source
408
21.2k
  {
409
21.2k
    bool sane;
410
411
21.2k
    init (blob);
412
413
21.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
21.2k
    start_processing ();
416
417
21.2k
    if (unlikely (!start))
418
12.7k
    {
419
12.7k
      end_processing ();
420
12.7k
      return blob;
421
12.7k
    }
422
423
8.50k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
8.50k
    sane = t->sanitize (this);
426
427
8.50k
    end_processing ();
428
429
8.50k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
8.50k
    if (sane)
431
8.50k
    {
432
8.50k
      hb_blob_make_immutable (blob);
433
8.50k
      return blob;
434
8.50k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
8.50k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp>(hb_blob_t*)
Line
Count
Source
408
21.3k
  {
409
21.3k
    bool sane;
410
411
21.3k
    init (blob);
412
413
21.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
21.3k
    start_processing ();
416
417
21.3k
    if (unlikely (!start))
418
4.81k
    {
419
4.81k
      end_processing ();
420
4.81k
      return blob;
421
4.81k
    }
422
423
16.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
16.5k
    sane = t->sanitize (this);
426
427
16.5k
    end_processing ();
428
429
16.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
16.5k
    if (sane)
431
14.7k
    {
432
14.7k
      hb_blob_make_immutable (blob);
433
14.7k
      return blob;
434
14.7k
    }
435
1.80k
    else
436
1.80k
    {
437
1.80k
      hb_blob_destroy (blob);
438
1.80k
      return hb_blob_get_empty ();
439
1.80k
    }
440
16.5k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head>(hb_blob_t*)
Line
Count
Source
408
30.2k
  {
409
30.2k
    bool sane;
410
411
30.2k
    init (blob);
412
413
30.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
30.2k
    start_processing ();
416
417
30.2k
    if (unlikely (!start))
418
18.4k
    {
419
18.4k
      end_processing ();
420
18.4k
      return blob;
421
18.4k
    }
422
423
11.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
11.8k
    sane = t->sanitize (this);
426
427
11.8k
    end_processing ();
428
429
11.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
11.8k
    if (sane)
431
8.07k
    {
432
8.07k
      hb_blob_make_immutable (blob);
433
8.07k
      return blob;
434
8.07k
    }
435
3.75k
    else
436
3.75k
    {
437
3.75k
      hb_blob_destroy (blob);
438
3.75k
      return hb_blob_get_empty ();
439
3.75k
    }
440
11.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF>(hb_blob_t*)
Line
Count
Source
408
37.6k
  {
409
37.6k
    bool sane;
410
411
37.6k
    init (blob);
412
413
37.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
37.6k
    start_processing ();
416
417
37.6k
    if (unlikely (!start))
418
26.6k
    {
419
26.6k
      end_processing ();
420
26.6k
      return blob;
421
26.6k
    }
422
423
11.0k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
11.0k
    sane = t->sanitize (this);
426
427
11.0k
    end_processing ();
428
429
11.0k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
11.0k
    if (sane)
431
9.41k
    {
432
9.41k
      hb_blob_make_immutable (blob);
433
9.41k
      return blob;
434
9.41k
    }
435
1.58k
    else
436
1.58k
    {
437
1.58k
      hb_blob_destroy (blob);
438
1.58k
      return hb_blob_get_empty ();
439
1.58k
    }
440
11.0k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR>(hb_blob_t*)
Line
Count
Source
408
255
  {
409
255
    bool sane;
410
411
255
    init (blob);
412
413
255
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
255
    start_processing ();
416
417
255
    if (unlikely (!start))
418
255
    {
419
255
      end_processing ();
420
255
      return blob;
421
255
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap>(hb_blob_t*)
Line
Count
Source
408
95.7k
  {
409
95.7k
    bool sane;
410
411
95.7k
    init (blob);
412
413
95.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
95.7k
    start_processing ();
416
417
95.7k
    if (unlikely (!start))
418
59.4k
    {
419
59.4k
      end_processing ();
420
59.4k
      return blob;
421
59.4k
    }
422
423
36.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
36.3k
    sane = t->sanitize (this);
426
427
36.3k
    end_processing ();
428
429
36.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
36.3k
    if (sane)
431
31.8k
    {
432
31.8k
      hb_blob_make_immutable (blob);
433
31.8k
      return blob;
434
31.8k
    }
435
4.42k
    else
436
4.42k
    {
437
4.42k
      hb_blob_destroy (blob);
438
4.42k
      return hb_blob_get_empty ();
439
4.42k
    }
440
36.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2>(hb_blob_t*)
Line
Count
Source
408
539
  {
409
539
    bool sane;
410
411
539
    init (blob);
412
413
539
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
539
    start_processing ();
416
417
539
    if (unlikely (!start))
418
343
    {
419
343
      end_processing ();
420
343
      return blob;
421
343
    }
422
423
196
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
196
    sane = t->sanitize (this);
426
427
196
    end_processing ();
428
429
196
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
196
    if (sane)
431
189
    {
432
189
      hb_blob_make_immutable (blob);
433
189
      return blob;
434
189
    }
435
7
    else
436
7
    {
437
7
      hb_blob_destroy (blob);
438
7
      return hb_blob_get_empty ();
439
7
    }
440
196
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL>(hb_blob_t*)
Line
Count
Source
408
20.3k
  {
409
20.3k
    bool sane;
410
411
20.3k
    init (blob);
412
413
20.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.3k
    start_processing ();
416
417
20.3k
    if (unlikely (!start))
418
19.6k
    {
419
19.6k
      end_processing ();
420
19.6k
      return blob;
421
19.6k
    }
422
423
690
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
690
    sane = t->sanitize (this);
426
427
690
    end_processing ();
428
429
690
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
690
    if (sane)
431
484
    {
432
484
      hb_blob_make_immutable (blob);
433
484
      return blob;
434
484
    }
435
206
    else
436
206
    {
437
206
      hb_blob_destroy (blob);
438
206
      return hb_blob_get_empty ();
439
206
    }
440
690
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR>(hb_blob_t*)
Line
Count
Source
408
37.3k
  {
409
37.3k
    bool sane;
410
411
37.3k
    init (blob);
412
413
37.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
37.3k
    start_processing ();
416
417
37.3k
    if (unlikely (!start))
418
30.9k
    {
419
30.9k
      end_processing ();
420
30.9k
      return blob;
421
30.9k
    }
422
423
6.39k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
6.39k
    sane = t->sanitize (this);
426
427
6.39k
    end_processing ();
428
429
6.39k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
6.39k
    if (sane)
431
5.24k
    {
432
5.24k
      hb_blob_make_immutable (blob);
433
5.24k
      return blob;
434
5.24k
    }
435
1.14k
    else
436
1.14k
    {
437
1.14k
      hb_blob_destroy (blob);
438
1.14k
      return hb_blob_get_empty ();
439
1.14k
    }
440
6.39k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_blob_t*)
Line
Count
Source
408
24.5k
  {
409
24.5k
    bool sane;
410
411
24.5k
    init (blob);
412
413
24.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
24.5k
    start_processing ();
416
417
24.5k
    if (unlikely (!start))
418
14.3k
    {
419
14.3k
      end_processing ();
420
14.3k
      return blob;
421
14.3k
    }
422
423
10.2k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
10.2k
    sane = t->sanitize (this);
426
427
10.2k
    end_processing ();
428
429
10.2k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
10.2k
    if (sane)
431
10.2k
    {
432
10.2k
      hb_blob_make_immutable (blob);
433
10.2k
      return blob;
434
10.2k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
10.2k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR>(hb_blob_t*)
Line
Count
Source
408
24.5k
  {
409
24.5k
    bool sane;
410
411
24.5k
    init (blob);
412
413
24.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
24.5k
    start_processing ();
416
417
24.5k
    if (unlikely (!start))
418
22.0k
    {
419
22.0k
      end_processing ();
420
22.0k
      return blob;
421
22.0k
    }
422
423
2.58k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.58k
    sane = t->sanitize (this);
426
427
2.58k
    end_processing ();
428
429
2.58k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.58k
    if (sane)
431
1.87k
    {
432
1.87k
      hb_blob_make_immutable (blob);
433
1.87k
      return blob;
434
1.87k
    }
435
707
    else
436
707
    {
437
707
      hb_blob_destroy (blob);
438
707
      return hb_blob_get_empty ();
439
707
    }
440
2.58k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hhea>(hb_blob_t*)
Line
Count
Source
408
24.4k
  {
409
24.4k
    bool sane;
410
411
24.4k
    init (blob);
412
413
24.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
24.4k
    start_processing ();
416
417
24.4k
    if (unlikely (!start))
418
13.1k
    {
419
13.1k
      end_processing ();
420
13.1k
      return blob;
421
13.1k
    }
422
423
11.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
11.3k
    sane = t->sanitize (this);
426
427
11.3k
    end_processing ();
428
429
11.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
11.3k
    if (sane)
431
8.93k
    {
432
8.93k
      hb_blob_make_immutable (blob);
433
8.93k
      return blob;
434
8.93k
    }
435
2.40k
    else
436
2.40k
    {
437
2.40k
      hb_blob_destroy (blob);
438
2.40k
      return hb_blob_get_empty ();
439
2.40k
    }
440
11.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vhea>(hb_blob_t*)
Line
Count
Source
408
20.5k
  {
409
20.5k
    bool sane;
410
411
20.5k
    init (blob);
412
413
20.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.5k
    start_processing ();
416
417
20.5k
    if (unlikely (!start))
418
19.9k
    {
419
19.9k
      end_processing ();
420
19.9k
      return blob;
421
19.9k
    }
422
423
540
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
540
    sane = t->sanitize (this);
426
427
540
    end_processing ();
428
429
540
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
540
    if (sane)
431
450
    {
432
450
      hb_blob_make_immutable (blob);
433
450
      return blob;
434
450
    }
435
90
    else
436
90
    {
437
90
      hb_blob_destroy (blob);
438
90
      return hb_blob_get_empty ();
439
90
    }
440
540
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_blob_t*)
Line
Count
Source
408
20.7k
  {
409
20.7k
    bool sane;
410
411
20.7k
    init (blob);
412
413
20.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.7k
    start_processing ();
416
417
20.7k
    if (unlikely (!start))
418
19.4k
    {
419
19.4k
      end_processing ();
420
19.4k
      return blob;
421
19.4k
    }
422
423
1.24k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.24k
    sane = t->sanitize (this);
426
427
1.24k
    end_processing ();
428
429
1.24k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.24k
    if (sane)
431
1.24k
    {
432
1.24k
      hb_blob_make_immutable (blob);
433
1.24k
      return blob;
434
1.24k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
1.24k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR>(hb_blob_t*)
Line
Count
Source
408
20.7k
  {
409
20.7k
    bool sane;
410
411
20.7k
    init (blob);
412
413
20.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.7k
    start_processing ();
416
417
20.7k
    if (unlikely (!start))
418
20.4k
    {
419
20.4k
      end_processing ();
420
20.4k
      return blob;
421
20.4k
    }
422
423
270
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
270
    sane = t->sanitize (this);
426
427
270
    end_processing ();
428
429
270
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
270
    if (sane)
431
69
    {
432
69
      hb_blob_make_immutable (blob);
433
69
      return blob;
434
69
    }
435
201
    else
436
201
    {
437
201
      hb_blob_destroy (blob);
438
201
      return hb_blob_get_empty ();
439
201
    }
440
270
  }
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
20.0k
  {
409
20.0k
    bool sane;
410
411
20.0k
    init (blob);
412
413
20.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.0k
    start_processing ();
416
417
20.0k
    if (unlikely (!start))
418
18.7k
    {
419
18.7k
      end_processing ();
420
18.7k
      return blob;
421
18.7k
    }
422
423
1.28k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.28k
    sane = t->sanitize (this);
426
427
1.28k
    end_processing ();
428
429
1.28k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.28k
    if (sane)
431
739
    {
432
739
      hb_blob_make_immutable (blob);
433
739
      return blob;
434
739
    }
435
548
    else
436
548
    {
437
548
      hb_blob_destroy (blob);
438
548
      return hb_blob_get_empty ();
439
548
    }
440
1.28k
  }
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
19.9k
  {
409
19.9k
    bool sane;
410
411
19.9k
    init (blob);
412
413
19.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
19.9k
    start_processing ();
416
417
19.9k
    if (unlikely (!start))
418
19.9k
    {
419
19.9k
      end_processing ();
420
19.9k
      return blob;
421
19.9k
    }
422
423
30
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
30
    sane = t->sanitize (this);
426
427
30
    end_processing ();
428
429
30
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
30
    if (sane)
431
8
    {
432
8
      hb_blob_make_immutable (blob);
433
8
      return blob;
434
8
    }
435
22
    else
436
22
    {
437
22
      hb_blob_destroy (blob);
438
22
      return hb_blob_get_empty ();
439
22
    }
440
30
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf>(hb_blob_t*)
Line
Count
Source
408
47.2k
  {
409
47.2k
    bool sane;
410
411
47.2k
    init (blob);
412
413
47.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
47.2k
    start_processing ();
416
417
47.2k
    if (unlikely (!start))
418
26.5k
    {
419
26.5k
      end_processing ();
420
26.5k
      return blob;
421
26.5k
    }
422
423
20.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
20.7k
    sane = t->sanitize (this);
426
427
20.7k
    end_processing ();
428
429
20.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
20.7k
    if (sane)
431
20.7k
    {
432
20.7k
      hb_blob_make_immutable (blob);
433
20.7k
      return blob;
434
20.7k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
20.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OpenTypeFontFile>(hb_blob_t*)
Line
Count
Source
408
21.3k
  {
409
21.3k
    bool sane;
410
411
21.3k
    init (blob);
412
413
21.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
21.3k
    start_processing ();
416
417
21.3k
    if (unlikely (!start))
418
3
    {
419
3
      end_processing ();
420
3
      return blob;
421
3
    }
422
423
21.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
21.3k
    sane = t->sanitize (this);
426
427
21.3k
    end_processing ();
428
429
21.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
21.3k
    if (sane)
431
21.0k
    {
432
21.0k
      hb_blob_make_immutable (blob);
433
21.0k
      return blob;
434
21.0k
    }
435
284
    else
436
284
    {
437
284
      hb_blob_destroy (blob);
438
284
      return hb_blob_get_empty ();
439
284
    }
440
21.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff1>(hb_blob_t*)
Line
Count
Source
408
40.9k
  {
409
40.9k
    bool sane;
410
411
40.9k
    init (blob);
412
413
40.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
40.9k
    start_processing ();
416
417
40.9k
    if (unlikely (!start))
418
33.4k
    {
419
33.4k
      end_processing ();
420
33.4k
      return blob;
421
33.4k
    }
422
423
7.50k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
7.50k
    sane = t->sanitize (this);
426
427
7.50k
    end_processing ();
428
429
7.50k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
7.50k
    if (sane)
431
7.38k
    {
432
7.38k
      hb_blob_make_immutable (blob);
433
7.38k
      return blob;
434
7.38k
    }
435
119
    else
436
119
    {
437
119
      hb_blob_destroy (blob);
438
119
      return hb_blob_get_empty ();
439
119
    }
440
7.50k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff2>(hb_blob_t*)
Line
Count
Source
408
4.02k
  {
409
4.02k
    bool sane;
410
411
4.02k
    init (blob);
412
413
4.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
4.02k
    start_processing ();
416
417
4.02k
    if (unlikely (!start))
418
1.32k
    {
419
1.32k
      end_processing ();
420
1.32k
      return blob;
421
1.32k
    }
422
423
2.69k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.69k
    sane = t->sanitize (this);
426
427
2.69k
    end_processing ();
428
429
2.69k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.69k
    if (sane)
431
2.65k
    {
432
2.65k
      hb_blob_make_immutable (blob);
433
2.65k
      return blob;
434
2.65k
    }
435
38
    else
436
38
    {
437
38
      hb_blob_destroy (blob);
438
38
      return hb_blob_get_empty ();
439
38
    }
440
2.69k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS>(hb_blob_t*)
Line
Count
Source
408
57.9k
  {
409
57.9k
    bool sane;
410
411
57.9k
    init (blob);
412
413
57.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
57.9k
    start_processing ();
416
417
57.9k
    if (unlikely (!start))
418
34.0k
    {
419
34.0k
      end_processing ();
420
34.0k
      return blob;
421
34.0k
    }
422
423
23.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
23.8k
    sane = t->sanitize (this);
426
427
23.8k
    end_processing ();
428
429
23.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
23.8k
    if (sane)
431
17.1k
    {
432
17.1k
      hb_blob_make_immutable (blob);
433
17.1k
      return blob;
434
17.1k
    }
435
6.73k
    else
436
6.73k
    {
437
6.73k
      hb_blob_destroy (blob);
438
6.73k
      return hb_blob_get_empty ();
439
6.73k
    }
440
23.8k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::kerx>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::kern>(hb_blob_t*)
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<AAT::ltag>(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::post>(hb_blob_t*)
Line
Count
Source
408
414
  {
409
414
    bool sane;
410
411
414
    init (blob);
412
413
414
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
414
    start_processing ();
416
417
414
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
414
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
414
    sane = t->sanitize (this);
426
427
414
    end_processing ();
428
429
414
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
414
    if (sane)
431
414
    {
432
414
      hb_blob_make_immutable (blob);
433
414
      return blob;
434
414
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
414
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBDT>(hb_blob_t*)
Line
Count
Source
408
164
  {
409
164
    bool sane;
410
411
164
    init (blob);
412
413
164
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
164
    start_processing ();
416
417
164
    if (unlikely (!start))
418
12
    {
419
12
      end_processing ();
420
12
      return blob;
421
12
    }
422
423
152
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
152
    sane = t->sanitize (this);
426
427
152
    end_processing ();
428
429
152
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
152
    if (sane)
431
147
    {
432
147
      hb_blob_make_immutable (blob);
433
147
      return blob;
434
147
    }
435
5
    else
436
5
    {
437
5
      hb_blob_destroy (blob);
438
5
      return hb_blob_get_empty ();
439
5
    }
440
152
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::SVG>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB>(hb_blob_t*)
Line
Count
Source
408
57.9k
  {
409
57.9k
    bool sane;
410
411
57.9k
    init (blob);
412
413
57.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
57.9k
    start_processing ();
416
417
57.9k
    if (unlikely (!start))
418
33.9k
    {
419
33.9k
      end_processing ();
420
33.9k
      return blob;
421
33.9k
    }
422
423
23.9k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
23.9k
    sane = t->sanitize (this);
426
427
23.9k
    end_processing ();
428
429
23.9k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
23.9k
    if (sane)
431
16.8k
    {
432
16.8k
      hb_blob_make_immutable (blob);
433
16.8k
      return blob;
434
16.8k
    }
435
7.09k
    else
436
7.09k
    {
437
7.09k
      hb_blob_destroy (blob);
438
7.09k
      return hb_blob_get_empty ();
439
7.09k
    }
440
23.9k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VARC>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::morx>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::mort>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT>(hb_blob_t*)
Line
Count
Source
408
20.3k
  {
409
20.3k
    bool sane;
410
411
20.3k
    init (blob);
412
413
20.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.3k
    start_processing ();
416
417
20.3k
    if (unlikely (!start))
418
17.1k
    {
419
17.1k
      end_processing ();
420
17.1k
      return blob;
421
17.1k
    }
422
423
3.19k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
3.19k
    sane = t->sanitize (this);
426
427
3.19k
    end_processing ();
428
429
3.19k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
3.19k
    if (sane)
431
2.19k
    {
432
2.19k
      hb_blob_make_immutable (blob);
433
2.19k
      return blob;
434
2.19k
    }
435
992
    else
436
992
    {
437
992
      hb_blob_destroy (blob);
438
992
      return hb_blob_get_empty ();
439
992
    }
440
3.19k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ankr>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::trak>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::feat>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar>(hb_blob_t*)
Line
Count
Source
408
20.4k
  {
409
20.4k
    bool sane;
410
411
20.4k
    init (blob);
412
413
20.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.4k
    start_processing ();
416
417
20.4k
    if (unlikely (!start))
418
16.6k
    {
419
16.6k
      end_processing ();
420
16.6k
      return blob;
421
16.6k
    }
422
423
3.80k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
3.80k
    sane = t->sanitize (this);
426
427
3.80k
    end_processing ();
428
429
3.80k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
3.80k
    if (sane)
431
2.82k
    {
432
2.82k
      hb_blob_make_immutable (blob);
433
2.82k
      return blob;
434
2.82k
    }
435
979
    else
436
979
    {
437
979
      hb_blob_destroy (blob);
438
979
      return hb_blob_get_empty ();
439
979
    }
440
3.80k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE>(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
35.5k
    {
419
35.5k
      end_processing ();
420
35.5k
      return blob;
421
35.5k
    }
422
423
1.04k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.04k
    sane = t->sanitize (this);
426
427
1.04k
    end_processing ();
428
429
1.04k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.04k
    if (sane)
431
550
    {
432
550
      hb_blob_make_immutable (blob);
433
550
      return blob;
434
550
    }
435
497
    else
436
497
    {
437
497
      hb_blob_destroy (blob);
438
497
      return hb_blob_get_empty ();
439
497
    }
440
1.04k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar>(hb_blob_t*)
Line
Count
Source
408
1.24k
  {
409
1.24k
    bool sane;
410
411
1.24k
    init (blob);
412
413
1.24k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.24k
    start_processing ();
416
417
1.24k
    if (unlikely (!start))
418
1.18k
    {
419
1.18k
      end_processing ();
420
1.18k
      return blob;
421
1.18k
    }
422
423
56
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
56
    sane = t->sanitize (this);
426
427
56
    end_processing ();
428
429
56
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
56
    if (sane)
431
43
    {
432
43
      hb_blob_make_immutable (blob);
433
43
      return blob;
434
43
    }
435
13
    else
436
13
    {
437
13
      hb_blob_destroy (blob);
438
13
      return hb_blob_get_empty ();
439
13
    }
440
56
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head const>(hb_blob_t*)
Line
Count
Source
408
1.81k
  {
409
1.81k
    bool sane;
410
411
1.81k
    init (blob);
412
413
1.81k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.81k
    start_processing ();
416
417
1.81k
    if (unlikely (!start))
418
66
    {
419
66
      end_processing ();
420
66
      return blob;
421
66
    }
422
423
1.74k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.74k
    sane = t->sanitize (this);
426
427
1.74k
    end_processing ();
428
429
1.74k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.74k
    if (sane)
431
1.31k
    {
432
1.31k
      hb_blob_make_immutable (blob);
433
1.31k
      return blob;
434
1.31k
    }
435
426
    else
436
426
    {
437
426
      hb_blob_destroy (blob);
438
426
      return hb_blob_get_empty ();
439
426
    }
440
1.74k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT const>(hb_blob_t*)
Line
Count
Source
408
817
  {
409
817
    bool sane;
410
411
817
    init (blob);
412
413
817
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
817
    start_processing ();
416
417
817
    if (unlikely (!start))
418
9
    {
419
9
      end_processing ();
420
9
      return blob;
421
9
    }
422
423
808
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
808
    sane = t->sanitize (this);
426
427
808
    end_processing ();
428
429
808
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
808
    if (sane)
431
782
    {
432
782
      hb_blob_make_immutable (blob);
433
782
      return blob;
434
782
    }
435
26
    else
436
26
    {
437
26
      hb_blob_destroy (blob);
438
26
      return hb_blob_get_empty ();
439
26
    }
440
808
  }
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::MATH>(hb_blob_t*)
Line
Count
Source
408
37.3k
  {
409
37.3k
    bool sane;
410
411
37.3k
    init (blob);
412
413
37.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
37.3k
    start_processing ();
416
417
37.3k
    if (unlikely (!start))
418
36.3k
    {
419
36.3k
      end_processing ();
420
36.3k
      return blob;
421
36.3k
    }
422
423
1.02k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.02k
    sane = t->sanitize (this);
426
427
1.02k
    end_processing ();
428
429
1.02k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.02k
    if (sane)
431
602
    {
432
602
      hb_blob_make_immutable (blob);
433
602
      return blob;
434
602
    }
435
426
    else
436
426
    {
437
426
      hb_blob_destroy (blob);
438
426
      return hb_blob_get_empty ();
439
426
    }
440
1.02k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF const>(hb_blob_t*)
Line
Count
Source
408
7
  {
409
7
    bool sane;
410
411
7
    init (blob);
412
413
7
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
7
    start_processing ();
416
417
7
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
6
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
6
    sane = t->sanitize (this);
426
427
6
    end_processing ();
428
429
6
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
6
    if (sane)
431
4
    {
432
4
      hb_blob_make_immutable (blob);
433
4
      return blob;
434
4
    }
435
2
    else
436
2
    {
437
2
      hb_blob_destroy (blob);
438
2
      return hb_blob_get_empty ();
439
2
    }
440
6
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB const>(hb_blob_t*)
Line
Count
Source
408
2
  {
409
2
    bool sane;
410
411
2
    init (blob);
412
413
2
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2
    start_processing ();
416
417
2
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
1
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1
    sane = t->sanitize (this);
426
427
1
    end_processing ();
428
429
1
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1
    if (sane)
431
1
    {
432
1
      hb_blob_make_immutable (blob);
433
1
      return blob;
434
1
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
1
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS const>(hb_blob_t*)
Line
Count
Source
408
5
  {
409
5
    bool sane;
410
411
5
    init (blob);
412
413
5
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
5
    start_processing ();
416
417
5
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
4
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
4
    sane = t->sanitize (this);
426
427
4
    end_processing ();
428
429
4
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
4
    if (sane)
431
3
    {
432
3
      hb_blob_make_immutable (blob);
433
3
      return blob;
434
3
    }
435
1
    else
436
1
    {
437
1
      hb_blob_destroy (blob);
438
1
      return hb_blob_get_empty ();
439
1
    }
440
4
  }
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
1.97k
  {
409
1.97k
    bool sane;
410
411
1.97k
    init (blob);
412
413
1.97k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.97k
    start_processing ();
416
417
1.97k
    if (unlikely (!start))
418
89
    {
419
89
      end_processing ();
420
89
      return blob;
421
89
    }
422
423
1.88k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.88k
    sane = t->sanitize (this);
426
427
1.88k
    end_processing ();
428
429
1.88k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.88k
    if (sane)
431
1.26k
    {
432
1.26k
      hb_blob_make_immutable (blob);
433
1.26k
      return blob;
434
1.26k
    }
435
617
    else
436
617
    {
437
617
      hb_blob_destroy (blob);
438
617
      return hb_blob_get_empty ();
439
617
    }
440
1.88k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR const>(hb_blob_t*)
Line
Count
Source
408
162
  {
409
162
    bool sane;
410
411
162
    init (blob);
412
413
162
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
162
    start_processing ();
416
417
162
    if (unlikely (!start))
418
9
    {
419
9
      end_processing ();
420
9
      return blob;
421
9
    }
422
423
153
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
153
    sane = t->sanitize (this);
426
427
153
    end_processing ();
428
429
153
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
153
    if (sane)
431
48
    {
432
48
      hb_blob_make_immutable (blob);
433
48
      return blob;
434
48
    }
435
105
    else
436
105
    {
437
105
      hb_blob_destroy (blob);
438
105
      return hb_blob_get_empty ();
439
105
    }
440
153
  }
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.37k
  {
409
1.37k
    bool sane;
410
411
1.37k
    init (blob);
412
413
1.37k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.37k
    start_processing ();
416
417
1.37k
    if (unlikely (!start))
418
106
    {
419
106
      end_processing ();
420
106
      return blob;
421
106
    }
422
423
1.26k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.26k
    sane = t->sanitize (this);
426
427
1.26k
    end_processing ();
428
429
1.26k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.26k
    if (sane)
431
951
    {
432
951
      hb_blob_make_immutable (blob);
433
951
      return blob;
434
951
    }
435
317
    else
436
317
    {
437
317
      hb_blob_destroy (blob);
438
317
      return hb_blob_get_empty ();
439
317
    }
440
1.26k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar const>(hb_blob_t*)
Line
Count
Source
408
932
  {
409
932
    bool sane;
410
411
932
    init (blob);
412
413
932
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
932
    start_processing ();
416
417
932
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
932
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
932
    sane = t->sanitize (this);
426
427
932
    end_processing ();
428
429
932
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
932
    if (sane)
431
932
    {
432
932
      hb_blob_make_immutable (blob);
433
932
      return blob;
434
932
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
932
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar const>(hb_blob_t*)
Line
Count
Source
408
46
  {
409
46
    bool sane;
410
411
46
    init (blob);
412
413
46
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
46
    start_processing ();
416
417
46
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
45
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
45
    sane = t->sanitize (this);
426
427
45
    end_processing ();
428
429
45
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
45
    if (sane)
431
38
    {
432
38
      hb_blob_make_immutable (blob);
433
38
      return blob;
434
38
    }
435
7
    else
436
7
    {
437
7
      hb_blob_destroy (blob);
438
7
      return hb_blob_get_empty ();
439
7
    }
440
45
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar const>(hb_blob_t*)
Line
Count
Source
408
2
  {
409
2
    bool sane;
410
411
2
    init (blob);
412
413
2
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2
    start_processing ();
416
417
2
    if (unlikely (!start))
418
2
    {
419
2
      end_processing ();
420
2
      return blob;
421
2
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR const>(hb_blob_t*)
Line
Count
Source
408
2
  {
409
2
    bool sane;
410
411
2
    init (blob);
412
413
2
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2
    start_processing ();
416
417
2
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
1
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1
    sane = t->sanitize (this);
426
427
1
    end_processing ();
428
429
1
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
1
    else
436
1
    {
437
1
      hb_blob_destroy (blob);
438
1
      return hb_blob_get_empty ();
439
1
    }
440
1
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG const>(hb_blob_t*)
Line
Count
Source
408
297
  {
409
297
    bool sane;
410
411
297
    init (blob);
412
413
297
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
297
    start_processing ();
416
417
297
    if (unlikely (!start))
418
13
    {
419
13
      end_processing ();
420
13
      return blob;
421
13
    }
422
423
284
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
284
    sane = t->sanitize (this);
426
427
284
    end_processing ();
428
429
284
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
284
    if (sane)
431
254
    {
432
254
      hb_blob_make_immutable (blob);
433
254
      return blob;
434
254
    }
435
30
    else
436
30
    {
437
30
      hb_blob_destroy (blob);
438
30
      return hb_blob_get_empty ();
439
30
    }
440
284
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix const>(hb_blob_t*)
Line
Count
Source
408
177
  {
409
177
    bool sane;
410
411
177
    init (blob);
412
413
177
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
177
    start_processing ();
416
417
177
    if (unlikely (!start))
418
10
    {
419
10
      end_processing ();
420
10
      return blob;
421
10
    }
422
423
167
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
167
    sane = t->sanitize (this);
426
427
167
    end_processing ();
428
429
167
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
167
    if (sane)
431
119
    {
432
119
      hb_blob_make_immutable (blob);
433
119
      return blob;
434
119
    }
435
48
    else
436
48
    {
437
48
      hb_blob_destroy (blob);
438
48
      return hb_blob_get_empty ();
439
48
    }
440
167
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR const>(hb_blob_t*)
Line
Count
Source
408
5.81k
  {
409
5.81k
    bool sane;
410
411
5.81k
    init (blob);
412
413
5.81k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
5.81k
    start_processing ();
416
417
5.81k
    if (unlikely (!start))
418
66
    {
419
66
      end_processing ();
420
66
      return blob;
421
66
    }
422
423
5.74k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
5.74k
    sane = t->sanitize (this);
426
427
5.74k
    end_processing ();
428
429
5.74k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
5.74k
    if (sane)
431
4.91k
    {
432
4.91k
      hb_blob_make_immutable (blob);
433
4.91k
      return blob;
434
4.91k
    }
435
836
    else
436
836
    {
437
836
      hb_blob_destroy (blob);
438
836
      return hb_blob_get_empty ();
439
836
    }
440
5.74k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL const>(hb_blob_t*)
Line
Count
Source
408
1.09k
  {
409
1.09k
    bool sane;
410
411
1.09k
    init (blob);
412
413
1.09k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.09k
    start_processing ();
416
417
1.09k
    if (unlikely (!start))
418
44
    {
419
44
      end_processing ();
420
44
      return blob;
421
44
    }
422
423
1.05k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.05k
    sane = t->sanitize (this);
426
427
1.05k
    end_processing ();
428
429
1.05k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.05k
    if (sane)
431
809
    {
432
809
      hb_blob_make_immutable (blob);
433
809
      return blob;
434
809
    }
435
245
    else
436
245
    {
437
245
      hb_blob_destroy (blob);
438
245
      return hb_blob_get_empty ();
439
245
    }
440
1.05k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC const>(hb_blob_t*)
Line
Count
Source
408
261
  {
409
261
    bool sane;
410
411
261
    init (blob);
412
413
261
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
261
    start_processing ();
416
417
261
    if (unlikely (!start))
418
7
    {
419
7
      end_processing ();
420
7
      return blob;
421
7
    }
422
423
254
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
254
    sane = t->sanitize (this);
426
427
254
    end_processing ();
428
429
254
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
254
    if (sane)
431
164
    {
432
164
      hb_blob_make_immutable (blob);
433
164
      return blob;
434
164
    }
435
90
    else
436
90
    {
437
90
      hb_blob_destroy (blob);
438
90
      return hb_blob_get_empty ();
439
90
    }
440
254
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf const>(hb_blob_t*)
Line
Count
Source
408
7.63k
  {
409
7.63k
    bool sane;
410
411
7.63k
    init (blob);
412
413
7.63k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
7.63k
    start_processing ();
416
417
7.63k
    if (unlikely (!start))
418
581
    {
419
581
      end_processing ();
420
581
      return blob;
421
581
    }
422
423
7.05k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
7.05k
    sane = t->sanitize (this);
426
427
7.05k
    end_processing ();
428
429
7.05k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
7.05k
    if (sane)
431
7.05k
    {
432
7.05k
      hb_blob_make_immutable (blob);
433
7.05k
      return blob;
434
7.05k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
7.05k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hdmx const>(hb_blob_t*)
Line
Count
Source
408
134
  {
409
134
    bool sane;
410
411
134
    init (blob);
412
413
134
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
134
    start_processing ();
416
417
134
    if (unlikely (!start))
418
15
    {
419
15
      end_processing ();
420
15
      return blob;
421
15
    }
422
423
119
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
119
    sane = t->sanitize (this);
426
427
119
    end_processing ();
428
429
119
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
119
    if (sane)
431
93
    {
432
93
      hb_blob_make_immutable (blob);
433
93
      return blob;
434
93
    }
435
26
    else
436
26
    {
437
26
      hb_blob_destroy (blob);
438
26
      return hb_blob_get_empty ();
439
26
    }
440
119
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name const>(hb_blob_t*)
Line
Count
Source
408
3.65k
  {
409
3.65k
    bool sane;
410
411
3.65k
    init (blob);
412
413
3.65k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
3.65k
    start_processing ();
416
417
3.65k
    if (unlikely (!start))
418
301
    {
419
301
      end_processing ();
420
301
      return blob;
421
301
    }
422
423
3.35k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
3.35k
    sane = t->sanitize (this);
426
427
3.35k
    end_processing ();
428
429
3.35k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
3.35k
    if (sane)
431
2.69k
    {
432
2.69k
      hb_blob_make_immutable (blob);
433
2.69k
      return blob;
434
2.69k
    }
435
658
    else
436
658
    {
437
658
      hb_blob_destroy (blob);
438
658
      return hb_blob_get_empty ();
439
658
    }
440
3.35k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtx const>(hb_blob_t*)
Line
Count
Source
408
4.56k
  {
409
4.56k
    bool sane;
410
411
4.56k
    init (blob);
412
413
4.56k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
4.56k
    start_processing ();
416
417
4.56k
    if (unlikely (!start))
418
198
    {
419
198
      end_processing ();
420
198
      return blob;
421
198
    }
422
423
4.36k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
4.36k
    sane = t->sanitize (this);
426
427
4.36k
    end_processing ();
428
429
4.36k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
4.36k
    if (sane)
431
4.36k
    {
432
4.36k
      hb_blob_make_immutable (blob);
433
4.36k
      return blob;
434
4.36k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
4.36k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vmtx const>(hb_blob_t*)
Line
Count
Source
408
562
  {
409
562
    bool sane;
410
411
562
    init (blob);
412
413
562
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
562
    start_processing ();
416
417
562
    if (unlikely (!start))
418
54
    {
419
54
      end_processing ();
420
54
      return blob;
421
54
    }
422
423
508
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
508
    sane = t->sanitize (this);
426
427
508
    end_processing ();
428
429
508
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
508
    if (sane)
431
508
    {
432
508
      hb_blob_make_immutable (blob);
433
508
      return blob;
434
508
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
508
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp const>(hb_blob_t*)
Line
Count
Source
408
11.6k
  {
409
11.6k
    bool sane;
410
411
11.6k
    init (blob);
412
413
11.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
11.6k
    start_processing ();
416
417
11.6k
    if (unlikely (!start))
418
33
    {
419
33
      end_processing ();
420
33
      return blob;
421
33
    }
422
423
11.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
11.5k
    sane = t->sanitize (this);
426
427
11.5k
    end_processing ();
428
429
11.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
11.5k
    if (sane)
431
11.1k
    {
432
11.1k
      hb_blob_make_immutable (blob);
433
11.1k
      return blob;
434
11.1k
    }
435
465
    else
436
465
    {
437
465
      hb_blob_destroy (blob);
438
465
      return hb_blob_get_empty ();
439
465
    }
440
11.5k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap const>(hb_blob_t*)
Line
Count
Source
408
9.25k
  {
409
9.25k
    bool sane;
410
411
9.25k
    init (blob);
412
413
9.25k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.25k
    start_processing ();
416
417
9.25k
    if (unlikely (!start))
418
142
    {
419
142
      end_processing ();
420
142
      return blob;
421
142
    }
422
423
9.11k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
9.11k
    sane = t->sanitize (this);
426
427
9.11k
    end_processing ();
428
429
9.11k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
9.11k
    if (sane)
431
8.43k
    {
432
8.43k
      hb_blob_make_immutable (blob);
433
8.43k
      return blob;
434
8.43k
    }
435
683
    else
436
683
    {
437
683
      hb_blob_destroy (blob);
438
683
      return hb_blob_get_empty ();
439
683
    }
440
9.11k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2 const>(hb_blob_t*)
Line
Count
Source
408
5.57k
  {
409
5.57k
    bool sane;
410
411
5.57k
    init (blob);
412
413
5.57k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
5.57k
    start_processing ();
416
417
5.57k
    if (unlikely (!start))
418
257
    {
419
257
      end_processing ();
420
257
      return blob;
421
257
    }
422
423
5.31k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
5.31k
    sane = t->sanitize (this);
426
427
5.31k
    end_processing ();
428
429
5.31k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
5.31k
    if (sane)
431
5.01k
    {
432
5.01k
      hb_blob_make_immutable (blob);
433
5.01k
      return blob;
434
5.01k
    }
435
308
    else
436
308
    {
437
308
      hb_blob_destroy (blob);
438
308
      return hb_blob_get_empty ();
439
308
    }
440
5.31k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post const>(hb_blob_t*)
Line
Count
Source
408
3.29k
  {
409
3.29k
    bool sane;
410
411
3.29k
    init (blob);
412
413
3.29k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
3.29k
    start_processing ();
416
417
3.29k
    if (unlikely (!start))
418
430
    {
419
430
      end_processing ();
420
430
      return blob;
421
430
    }
422
423
2.86k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.86k
    sane = t->sanitize (this);
426
427
2.86k
    end_processing ();
428
429
2.86k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.86k
    if (sane)
431
2.71k
    {
432
2.71k
      hb_blob_make_immutable (blob);
433
2.71k
      return blob;
434
2.71k
    }
435
152
    else
436
152
    {
437
152
      hb_blob_destroy (blob);
438
152
      return hb_blob_get_empty ();
439
152
    }
440
2.86k
  }
441
442
  template <typename Type>
443
  hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag)
444
826k
  {
445
826k
    if (!num_glyphs_set)
446
658k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
826k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
826k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::loca>(hb_face_t const*, unsigned int)
Line
Count
Source
444
21.2k
  {
445
21.2k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
21.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
21.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp>(hb_face_t const*, unsigned int)
Line
Count
Source
444
21.3k
  {
445
21.3k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
21.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
21.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head>(hb_face_t const*, unsigned int)
Line
Count
Source
444
30.2k
  {
445
30.2k
    if (!num_glyphs_set)
446
8.92k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
30.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
30.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF>(hb_face_t const*, unsigned int)
Line
Count
Source
444
37.6k
  {
445
37.6k
    if (!num_glyphs_set)
446
37.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
37.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
37.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
255
  {
445
255
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
255
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
255
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap>(hb_face_t const*, unsigned int)
Line
Count
Source
444
95.7k
  {
445
95.7k
    if (!num_glyphs_set)
446
95.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
95.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
95.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2>(hb_face_t const*, unsigned int)
Line
Count
Source
444
539
  {
445
539
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
539
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
539
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.3k
  {
445
20.3k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
37.3k
  {
445
37.3k
    if (!num_glyphs_set)
446
37.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
37.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
37.3k
  }
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
24.5k
  {
445
24.5k
    if (!num_glyphs_set)
446
24.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
24.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
24.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
24.5k
  {
445
24.5k
    if (!num_glyphs_set)
446
24.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
24.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
24.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
24.4k
  {
445
24.4k
    if (!num_glyphs_set)
446
4.32k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
24.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
24.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.5k
  {
445
20.5k
    if (!num_glyphs_set)
446
462
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.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
20.7k
  {
445
20.7k
    if (!num_glyphs_set)
446
20.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.7k
  {
445
20.7k
    if (!num_glyphs_set)
446
20.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.7k
  }
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
20.0k
  {
445
20.0k
    if (!num_glyphs_set)
446
20.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.0k
  }
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
19.9k
  {
445
19.9k
    if (!num_glyphs_set)
446
19.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
19.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
19.9k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf>(hb_face_t const*, unsigned int)
Line
Count
Source
444
47.2k
  {
445
47.2k
    if (!num_glyphs_set)
446
47.2k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
47.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
47.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff1>(hb_face_t const*, unsigned int)
Line
Count
Source
444
40.9k
  {
445
40.9k
    if (!num_glyphs_set)
446
40.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
40.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
40.9k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff2>(hb_face_t const*, unsigned int)
Line
Count
Source
444
4.02k
  {
445
4.02k
    if (!num_glyphs_set)
446
4.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
4.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
4.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS>(hb_face_t const*, unsigned int)
Line
Count
Source
444
57.9k
  {
445
57.9k
    if (!num_glyphs_set)
446
57.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
57.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
57.9k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::kerx>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::kern>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::meta>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ltag>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::name>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post>(hb_face_t const*, unsigned int)
Line
Count
Source
444
414
  {
445
414
    if (!num_glyphs_set)
446
414
      set_num_glyphs (hb_face_get_glyph_count (face));
447
414
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
414
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBDT>(hb_face_t const*, unsigned int)
Line
Count
Source
444
164
  {
445
164
    if (!num_glyphs_set)
446
164
      set_num_glyphs (hb_face_get_glyph_count (face));
447
164
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
164
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::SVG>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB>(hb_face_t const*, unsigned int)
Line
Count
Source
444
57.9k
  {
445
57.9k
    if (!num_glyphs_set)
446
57.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
57.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
57.9k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VARC>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::morx>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::mort>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.3k
  {
445
20.3k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.3k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ankr>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::trak>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::feat>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.4k
  {
445
20.4k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.4k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE>(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<OT::avar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.24k
  {
445
1.24k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.24k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.24k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.81k
  {
445
1.81k
    if (!num_glyphs_set)
446
1.81k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.81k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.81k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
817
  {
445
817
    if (!num_glyphs_set)
446
817
      set_num_glyphs (hb_face_get_glyph_count (face));
447
817
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
817
  }
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::MATH>(hb_face_t const*, unsigned int)
Line
Count
Source
444
37.3k
  {
445
37.3k
    if (!num_glyphs_set)
446
37.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
37.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
37.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
7
  {
445
7
    if (!num_glyphs_set)
446
7
      set_num_glyphs (hb_face_get_glyph_count (face));
447
7
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
7
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2
  {
445
2
    if (!num_glyphs_set)
446
2
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
5
  {
445
5
    if (!num_glyphs_set)
446
5
      set_num_glyphs (hb_face_get_glyph_count (face));
447
5
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
5
  }
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
1.97k
  {
445
1.97k
    if (!num_glyphs_set)
446
1.97k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.97k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.97k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
162
  {
445
162
    if (!num_glyphs_set)
446
162
      set_num_glyphs (hb_face_get_glyph_count (face));
447
162
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
162
  }
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.37k
  {
445
1.37k
    if (!num_glyphs_set)
446
1.37k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.37k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.37k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
932
  {
445
932
    if (!num_glyphs_set)
446
932
      set_num_glyphs (hb_face_get_glyph_count (face));
447
932
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
932
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
46
  {
445
46
    if (!num_glyphs_set)
446
46
      set_num_glyphs (hb_face_get_glyph_count (face));
447
46
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
46
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2
  {
445
2
    if (!num_glyphs_set)
446
2
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2
  {
445
2
    if (!num_glyphs_set)
446
2
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
297
  {
445
297
    if (!num_glyphs_set)
446
297
      set_num_glyphs (hb_face_get_glyph_count (face));
447
297
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
297
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
177
  {
445
177
    if (!num_glyphs_set)
446
177
      set_num_glyphs (hb_face_get_glyph_count (face));
447
177
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
177
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
5.81k
  {
445
5.81k
    if (!num_glyphs_set)
446
5.81k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
5.81k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
5.81k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.09k
  {
445
1.09k
    if (!num_glyphs_set)
446
1.09k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.09k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.09k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
261
  {
445
261
    if (!num_glyphs_set)
446
261
      set_num_glyphs (hb_face_get_glyph_count (face));
447
261
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
261
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
7.63k
  {
445
7.63k
    if (!num_glyphs_set)
446
7.63k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
7.63k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
7.63k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hdmx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
134
  {
445
134
    if (!num_glyphs_set)
446
134
      set_num_glyphs (hb_face_get_glyph_count (face));
447
134
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
134
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
3.65k
  {
445
3.65k
    if (!num_glyphs_set)
446
3.65k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
3.65k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
3.65k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
4.56k
  {
445
4.56k
    if (!num_glyphs_set)
446
4.56k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
4.56k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
4.56k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vmtx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
562
  {
445
562
    if (!num_glyphs_set)
446
562
      set_num_glyphs (hb_face_get_glyph_count (face));
447
562
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
562
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
11.6k
  {
445
11.6k
    if (!num_glyphs_set)
446
11.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
11.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
11.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.25k
  {
445
9.25k
    if (!num_glyphs_set)
446
9.25k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.25k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.25k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2 const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
5.57k
  {
445
5.57k
    if (!num_glyphs_set)
446
5.57k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
5.57k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
5.57k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
3.29k
  {
445
3.29k
    if (!num_glyphs_set)
446
3.29k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
3.29k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
3.29k
  }
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
0
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
0
  { c->set_object (obj); }
Unexecuted instantiation: hb_sanitize_with_object_t::hb_sanitize_with_object_t<AAT::KerxSubTable const*>(hb_sanitize_context_t*, AAT::KerxSubTable const* const&)
Unexecuted instantiation: 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&)
Unexecuted instantiation: 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&)
468
  ~hb_sanitize_with_object_t ()
469
0
  { c->reset_object (); }
470
471
  private:
472
  hb_sanitize_context_t *c;
473
};
474
475
476
#endif /* HB_SANITIZE_HH */