Coverage Report

Created: 2026-06-13 06:37

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
3.44M
#define HB_SANITIZE_MAX_OPS_MIN 16384
115
#endif
116
#ifndef HB_SANITIZE_MAX_OPS_MAX
117
3.45M
#define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF
118
#endif
119
#ifndef HB_SANITIZE_MAX_SUBTABLES
120
308k
#define HB_SANITIZE_MAX_SUBTABLES 0x4000
121
#endif
122
123
struct hb_sanitize_context_t :
124
       hb_dispatch_context_t<hb_sanitize_context_t, bool, HB_DEBUG_SANITIZE>
125
{
126
  hb_sanitize_context_t (const char *start_ = nullptr, const char *end_ = nullptr) :
127
3.28M
  start (start_), end (end_),
128
3.28M
  length (0),
129
3.28M
  max_ops (0), max_subtables (0),
130
3.28M
        recursion_depth (0),
131
3.28M
  writable (false),
132
3.28M
  blob (nullptr),
133
3.28M
  num_glyphs (65536),
134
3.28M
  num_glyphs_set (false),
135
3.28M
  lazy_some_gpos (false) {}
136
137
0
  const char *get_name () { return "SANITIZE"; }
138
  template <typename T, typename F>
139
  bool may_dispatch (const T *obj HB_UNUSED, const F *format)
140
7.02M
  {
141
7.02M
    return format->sanitize (this) &&
142
7.02M
     hb_barrier ();
143
7.02M
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::SingleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::SingleSubst const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
170k
  {
141
170k
    return format->sanitize (this) &&
142
170k
     hb_barrier ();
143
170k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::MultipleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::MultipleSubst const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
102k
  {
141
102k
    return format->sanitize (this) &&
142
101k
     hb_barrier ();
143
102k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::AlternateSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::AlternateSubst const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
186k
  {
141
186k
    return format->sanitize (this) &&
142
185k
     hb_barrier ();
143
186k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::LigatureSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::LigatureSubst const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
79.4k
  {
141
79.4k
    return format->sanitize (this) &&
142
79.3k
     hb_barrier ();
143
79.4k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Context, OT::NumType<true, unsigned short, 2u> >(OT::Context const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
109k
  {
141
109k
    return format->sanitize (this) &&
142
109k
     hb_barrier ();
143
109k
  }
bool hb_sanitize_context_t::may_dispatch<OT::ChainContext, OT::NumType<true, unsigned short, 2u> >(OT::ChainContext const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
196k
  {
141
196k
    return format->sanitize (this) &&
142
196k
     hb_barrier ();
143
196k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst>, OT::NumType<true, unsigned short, 2u> >(OT::Extension<OT::Layout::GSUB_impl::ExtensionSubst> const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
113k
  {
141
113k
    return format->sanitize (this) &&
142
113k
     hb_barrier ();
143
113k
  }
bool hb_sanitize_context_t::may_dispatch<OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst>, OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> >(OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*, OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*)
Line
Count
Source
140
22.2k
  {
141
22.2k
    return format->sanitize (this) &&
142
22.2k
     hb_barrier ();
143
22.2k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GSUB_impl::ReverseChainSingleSubst, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GSUB_impl::ReverseChainSingleSubst const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
88.8k
  {
141
88.8k
    return format->sanitize (this) &&
142
88.7k
     hb_barrier ();
143
88.8k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::SinglePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::SinglePos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
131k
  {
141
131k
    return format->sanitize (this) &&
142
131k
     hb_barrier ();
143
131k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::PairPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::PairPos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
121k
  {
141
121k
    return format->sanitize (this) &&
142
121k
     hb_barrier ();
143
121k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::CursivePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::CursivePos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
211k
  {
141
211k
    return format->sanitize (this) &&
142
211k
     hb_barrier ();
143
211k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkBasePos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkBasePos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
75.2k
  {
141
75.2k
    return format->sanitize (this) &&
142
75.1k
     hb_barrier ();
143
75.2k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkLigPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkLigPos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
55.9k
  {
141
55.9k
    return format->sanitize (this) &&
142
55.8k
     hb_barrier ();
143
55.9k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Layout::GPOS_impl::MarkMarkPos, OT::NumType<true, unsigned short, 2u> >(OT::Layout::GPOS_impl::MarkMarkPos const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
39.1k
  {
141
39.1k
    return format->sanitize (this) &&
142
39.0k
     hb_barrier ();
143
39.1k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Extension<OT::Layout::GPOS_impl::ExtensionPos>, OT::NumType<true, unsigned short, 2u> >(OT::Extension<OT::Layout::GPOS_impl::ExtensionPos> const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
102k
  {
141
102k
    return format->sanitize (this) &&
142
102k
     hb_barrier ();
143
102k
  }
bool hb_sanitize_context_t::may_dispatch<OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos>, OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*, OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*)
Line
Count
Source
140
9.62k
  {
141
9.62k
    return format->sanitize (this) &&
142
9.61k
     hb_barrier ();
143
9.62k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Paint, OT::NumType<true, unsigned char, 1u> >(OT::Paint const*, OT::NumType<true, unsigned char, 1u> const*)
Line
Count
Source
140
5.15M
  {
141
5.15M
    return format->sanitize (this) &&
142
5.15M
     hb_barrier ();
143
5.15M
  }
bool hb_sanitize_context_t::may_dispatch<OT::ClipBox, OT::NumType<true, unsigned char, 1u> >(OT::ClipBox const*, OT::NumType<true, unsigned char, 1u> const*)
Line
Count
Source
140
51.7k
  {
141
51.7k
    return format->sanitize (this) &&
142
51.7k
     hb_barrier ();
143
51.7k
  }
144
14.6M
  static return_t default_return_value () { return true; }
145
2.75k
  static return_t no_dispatch_return_value () { return false; }
146
0
  bool stop_sublookup_iteration (const return_t r) const { return !r; }
147
148
  bool visit_subtables (unsigned count)
149
308k
  {
150
308k
    max_subtables += count;
151
308k
    return max_subtables < HB_SANITIZE_MAX_SUBTABLES;
152
308k
  }
153
154
  private:
155
  template <typename T, typename ...Ts> auto
156
  _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN
157
  ( obj.sanitize (this, std::forward<Ts> (ds)...) )
158
  template <typename T, typename ...Ts> auto
159
  _dispatch (const T &obj, hb_priority<0>, Ts&&... ds) HB_AUTO_RETURN
160
  ( obj.dispatch (this, std::forward<Ts> (ds)...) )
161
  public:
162
  template <typename T, typename ...Ts> auto
163
  dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN
164
  ( _dispatch (obj, hb_prioritize, std::forward<Ts> (ds)...) )
165
166
112k
  hb_sanitize_context_t (hb_blob_t *b) : hb_sanitize_context_t ()
167
112k
  {
168
112k
    init (b);
169
170
112k
    if (blob)
171
112k
      start_processing ();
172
112k
  }
173
174
  ~hb_sanitize_context_t ()
175
3.28M
  {
176
3.28M
    if (blob)
177
112k
      end_processing ();
178
3.28M
  }
179
180
  void init (hb_blob_t *b)
181
3.44M
  {
182
3.44M
    this->blob = hb_blob_reference (b);
183
3.44M
    this->writable = false;
184
3.44M
  }
185
186
  void set_num_glyphs (unsigned int num_glyphs_)
187
3.06M
  {
188
3.06M
    num_glyphs = num_glyphs_;
189
3.06M
    num_glyphs_set = true;
190
3.06M
  }
191
4.21M
  unsigned int get_num_glyphs () { return num_glyphs; }
192
193
18.4k
  void set_max_ops (int max_ops_) { max_ops = max_ops_; }
194
195
  template <typename T>
196
  void set_object (const T *obj)
197
12.1k
  {
198
12.1k
    reset_object ();
199
200
12.1k
    if (!obj) return;
201
202
3.18k
    const char *obj_start = (const char *) obj;
203
3.18k
    if (unlikely (obj_start < this->start || this->end <= obj_start))
204
0
    {
205
0
      this->start = this->end = nullptr;
206
0
      this->length = 0;
207
0
    }
208
3.18k
    else
209
3.18k
    {
210
3.18k
      this->start = obj_start;
211
3.18k
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
3.18k
      this->length = this->end - this->start;
213
3.18k
    }
214
3.18k
  }
void hb_sanitize_context_t::set_object<AAT::KerxSubTable>(AAT::KerxSubTable const*)
Line
Count
Source
197
5.04k
  {
198
5.04k
    reset_object ();
199
200
5.04k
    if (!obj) return;
201
202
576
    const char *obj_start = (const char *) obj;
203
576
    if (unlikely (obj_start < this->start || this->end <= obj_start))
204
0
    {
205
0
      this->start = this->end = nullptr;
206
0
      this->length = 0;
207
0
    }
208
576
    else
209
576
    {
210
576
      this->start = obj_start;
211
576
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
576
      this->length = this->end - this->start;
213
576
    }
214
576
  }
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernOTSubTableHeader> >(OT::KernSubTable<OT::KernOTSubTableHeader> const*)
Line
Count
Source
197
3.95k
  {
198
3.95k
    reset_object ();
199
200
3.95k
    if (!obj) return;
201
202
1.51k
    const char *obj_start = (const char *) obj;
203
1.51k
    if (unlikely (obj_start < this->start || this->end <= obj_start))
204
0
    {
205
0
      this->start = this->end = nullptr;
206
0
      this->length = 0;
207
0
    }
208
1.51k
    else
209
1.51k
    {
210
1.51k
      this->start = obj_start;
211
1.51k
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
1.51k
      this->length = this->end - this->start;
213
1.51k
    }
214
1.51k
  }
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernAATSubTableHeader> >(OT::KernSubTable<OT::KernAATSubTableHeader> const*)
Line
Count
Source
197
3.11k
  {
198
3.11k
    reset_object ();
199
200
3.11k
    if (!obj) return;
201
202
1.09k
    const char *obj_start = (const char *) obj;
203
1.09k
    if (unlikely (obj_start < this->start || this->end <= obj_start))
204
0
    {
205
0
      this->start = this->end = nullptr;
206
0
      this->length = 0;
207
0
    }
208
1.09k
    else
209
1.09k
    {
210
1.09k
      this->start = obj_start;
211
1.09k
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
1.09k
      this->length = this->end - this->start;
213
1.09k
    }
214
1.09k
  }
215
216
  void reset_object ()
217
3.46M
  {
218
3.46M
    if (this->blob)
219
3.46M
    {
220
3.46M
      this->start = this->blob->data;
221
3.46M
      this->end = this->start + this->blob->length;
222
3.46M
    }
223
3.46M
    this->length = this->end - this->start;
224
3.46M
    assert (this->start <= this->end); /* Must not overflow. */
225
3.46M
  }
226
227
  void start_processing (const char *start_ = nullptr, const char *end_ = nullptr)
228
3.44M
  {
229
3.44M
    if (start_)
230
0
    {
231
0
      this->start = start_;
232
0
      this->end = end_;
233
0
    }
234
3.44M
    reset_object ();
235
3.44M
    unsigned m;
236
3.44M
    if (unlikely (hb_unsigned_mul_overflows (this->end - this->start, HB_SANITIZE_MAX_OPS_FACTOR, &m)))
237
0
      this->max_ops = HB_SANITIZE_MAX_OPS_MAX;
238
3.44M
    else
239
3.44M
      this->max_ops = hb_clamp (m,
240
3.44M
        (unsigned) HB_SANITIZE_MAX_OPS_MIN,
241
3.44M
        (unsigned) HB_SANITIZE_MAX_OPS_MAX);
242
3.44M
    this->debug_depth = 0;
243
3.44M
    this->recursion_depth = 0;
244
245
3.44M
    DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1,
246
3.44M
         "start [%p..%p] (%lu bytes)",
247
3.44M
         this->start, this->end,
248
3.44M
         (unsigned long) (this->end - this->start));
249
3.44M
  }
250
251
  void end_processing ()
252
3.58M
  {
253
3.58M
    DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1,
254
3.58M
         "end [%p..%p]",
255
3.58M
         this->start, this->end);
256
257
3.58M
    hb_blob_destroy (this->blob);
258
3.58M
    this->blob = nullptr;
259
3.58M
    this->start = this->end = nullptr;
260
3.58M
    this->length = 0;
261
3.58M
  }
262
263
  bool check_ops(unsigned count)
264
676k
  {
265
    /* Avoid underflow */
266
676k
    if (unlikely (this->max_ops < 0 || count >= (unsigned) this->max_ops))
267
264
    {
268
264
      this->max_ops = -1;
269
264
      return false;
270
264
    }
271
676k
    this->max_ops -= (int) count;
272
676k
    return true;
273
676k
  }
274
275
#ifndef HB_OPTIMIZE_SIZE
276
  HB_ALWAYS_INLINE
277
#endif
278
  bool check_range (const void *base,
279
        unsigned int len) const
280
38.6M
  {
281
38.6M
    const char *p = (const char *) base;
282
38.6M
    bool ok = (uintptr_t) (p - this->start) <= this->length &&
283
27.9M
        (unsigned int) (this->end - p) >= len &&
284
25.7M
        ((this->max_ops -= len) > 0);
285
286
38.6M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
287
38.6M
         "check_range [%p..%p]"
288
38.6M
         " (%u bytes) in [%p..%p] -> %s",
289
38.6M
         p, p + len, len,
290
38.6M
         this->start, this->end,
291
38.6M
         ok ? "OK" : "OUT-OF-RANGE");
292
293
38.6M
    return likely (ok);
294
38.6M
  }
295
#ifndef HB_OPTIMIZE_SIZE
296
  HB_ALWAYS_INLINE
297
#endif
298
  bool check_range_fast (const void *base,
299
       unsigned int len) const
300
0
  {
301
0
    const char *p = (const char *) base;
302
0
    bool ok = ((uintptr_t) (p - this->start) <= this->length &&
303
0
         (unsigned int) (this->end - p) >= len);
304
0
305
0
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
306
0
         "check_range_fast [%p..%p]"
307
0
         " (%u bytes) in [%p..%p] -> %s",
308
0
         p, p + len, len,
309
0
         this->start, this->end,
310
0
         ok ? "OK" : "OUT-OF-RANGE");
311
0
312
0
    return likely (ok);
313
0
  }
314
315
#ifndef HB_OPTIMIZE_SIZE
316
  HB_ALWAYS_INLINE
317
#endif
318
  bool check_point (const void *base) const
319
918M
  {
320
918M
    const char *p = (const char *) base;
321
918M
    bool ok = (uintptr_t) (p - this->start) <= this->length;
322
323
918M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
324
918M
         "check_point [%p]"
325
918M
         " in [%p..%p] -> %s",
326
918M
         p,
327
918M
         this->start, this->end,
328
918M
         ok ? "OK" : "OUT-OF-RANGE");
329
330
918M
    return likely (ok);
331
918M
  }
332
333
  template <typename T>
334
  bool check_range (const T *base,
335
        unsigned int a,
336
        unsigned int b) const
337
27.5M
  {
338
27.5M
    unsigned m;
339
27.5M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
27.2M
     this->check_range (base, m);
341
27.5M
  }
bool hb_sanitize_context_t::check_range<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int, unsigned int) const
Line
Count
Source
337
19.3k
  {
338
19.3k
    unsigned m;
339
19.3k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
19.3k
     this->check_range (base, m);
341
19.3k
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
583k
  {
338
583k
    unsigned m;
339
583k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
583k
     this->check_range (base, m);
341
583k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
5.79k
  {
338
5.79k
    unsigned m;
339
5.79k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
5.79k
     this->check_range (base, m);
341
5.79k
  }
bool hb_sanitize_context_t::check_range<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
5.72k
  {
338
5.72k
    unsigned m;
339
5.72k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
5.72k
     this->check_range (base, m);
341
5.72k
  }
bool hb_sanitize_context_t::check_range<AAT::Feature>(AAT::Feature const*, unsigned int, unsigned int) const
Line
Count
Source
337
5.61k
  {
338
5.61k
    unsigned m;
339
5.61k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
5.61k
     this->check_range (base, m);
341
5.61k
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
3.06M
  {
338
3.06M
    unsigned m;
339
3.06M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.06M
     this->check_range (base, m);
341
3.06M
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int, unsigned int) const
Line
Count
Source
337
6.02k
  {
338
6.02k
    unsigned m;
339
6.02k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
6.02k
     this->check_range (base, m);
341
6.02k
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
841
  {
338
841
    unsigned m;
339
841
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
841
     this->check_range (base, m);
341
841
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int, unsigned int) const
Line
Count
Source
337
455
  {
338
455
    unsigned m;
339
455
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
455
     this->check_range (base, m);
341
455
  }
bool hb_sanitize_context_t::check_range<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Line
Count
Source
337
13.3M
  {
338
13.3M
    unsigned m;
339
13.3M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
13.3M
     this->check_range (base, m);
341
13.3M
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
567
  {
338
567
    unsigned m;
339
567
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
567
     this->check_range (base, m);
341
567
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.46k
  {
338
1.46k
    unsigned m;
339
1.46k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.46k
     this->check_range (base, m);
341
1.46k
  }
bool hb_sanitize_context_t::check_range<OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > >(OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > const*, unsigned int, unsigned int) const
Line
Count
Source
337
4.77k
  {
338
4.77k
    unsigned m;
339
4.77k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4.77k
     this->check_range (base, m);
341
4.77k
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
5.43k
  {
338
5.43k
    unsigned m;
339
5.43k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
5.43k
     this->check_range (base, m);
341
5.43k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const
Line
Count
Source
337
4.40k
  {
338
4.40k
    unsigned m;
339
4.40k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4.40k
     this->check_range (base, m);
341
4.40k
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
2.39k
  {
338
2.39k
    unsigned m;
339
2.39k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
2.39k
     this->check_range (base, m);
341
2.39k
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
422
  {
338
422
    unsigned m;
339
422
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
422
     this->check_range (base, m);
341
422
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int, unsigned int) const
Line
Count
Source
337
734
  {
338
734
    unsigned m;
339
734
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
734
     this->check_range (base, m);
341
734
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
8.54k
  {
338
8.54k
    unsigned m;
339
8.54k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
8.54k
     this->check_range (base, m);
341
8.54k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.65k
  {
338
1.65k
    unsigned m;
339
1.65k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.65k
     this->check_range (base, m);
341
1.65k
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
9.25M
  {
338
9.25M
    unsigned m;
339
9.25M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
8.94M
     this->check_range (base, m);
341
9.25M
  }
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
91
  {
338
91
    unsigned m;
339
91
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
91
     this->check_range (base, m);
341
91
  }
bool hb_sanitize_context_t::check_range<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int, unsigned int) const
Line
Count
Source
337
66
  {
338
66
    unsigned m;
339
66
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
66
     this->check_range (base, m);
341
66
  }
bool hb_sanitize_context_t::check_range<AAT::FeatureName>(AAT::FeatureName const*, unsigned int, unsigned int) const
Line
Count
Source
337
35
  {
338
35
    unsigned m;
339
35
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
35
     this->check_range (base, m);
341
35
  }
bool hb_sanitize_context_t::check_range<AAT::SettingName>(AAT::SettingName const*, unsigned int, unsigned int) const
Line
Count
Source
337
595
  {
338
595
    unsigned m;
339
595
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
595
     this->check_range (base, m);
341
595
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
235k
  {
338
235k
    unsigned m;
339
235k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
235k
     this->check_range (base, m);
341
235k
  }
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
337
269k
  {
338
269k
    unsigned m;
339
269k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
269k
     this->check_range (base, m);
341
269k
  }
bool hb_sanitize_context_t::check_range<void>(void const*, unsigned int, unsigned int) const
Line
Count
Source
337
22.4k
  {
338
22.4k
    unsigned m;
339
22.4k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
22.4k
     this->check_range (base, m);
341
22.4k
  }
bool hb_sanitize_context_t::check_range<OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairValueRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.91k
  {
338
1.91k
    unsigned m;
339
1.91k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.91k
     this->check_range (base, m);
341
1.91k
  }
bool hb_sanitize_context_t::check_range<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
3.80k
  {
338
3.80k
    unsigned m;
339
3.80k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
3.80k
     this->check_range (base, m);
341
3.80k
  }
bool hb_sanitize_context_t::check_range<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
4.76k
  {
338
4.76k
    unsigned m;
339
4.76k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4.76k
     this->check_range (base, m);
341
4.76k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
4.52k
  {
338
4.52k
    unsigned m;
339
4.52k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4.52k
     this->check_range (base, m);
341
4.52k
  }
bool hb_sanitize_context_t::check_range<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Line
Count
Source
337
516
  {
338
516
    unsigned m;
339
516
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
516
     this->check_range (base, m);
341
516
  }
bool hb_sanitize_context_t::check_range<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
20.0k
  {
338
20.0k
    unsigned m;
339
20.0k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
20.0k
     this->check_range (base, m);
341
20.0k
  }
bool hb_sanitize_context_t::check_range<OT::LayerRecord>(OT::LayerRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
19.5k
  {
338
19.5k
    unsigned m;
339
19.5k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
19.5k
     this->check_range (base, m);
341
19.5k
  }
bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >(OT::HBFixed<OT::NumType<true, short, 2u>, 14u> const*, unsigned int, unsigned int) const
Line
Count
Source
337
9.68k
  {
338
9.68k
    unsigned m;
339
9.68k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
9.62k
     this->check_range (base, m);
341
9.68k
  }
bool hb_sanitize_context_t::check_range<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
476k
  {
338
476k
    unsigned m;
339
476k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
476k
     this->check_range (base, m);
341
476k
  }
bool hb_sanitize_context_t::check_range<OT::AxisRecord>(OT::AxisRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
15.2k
  {
338
15.2k
    unsigned m;
339
15.2k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
15.2k
     this->check_range (base, m);
341
15.2k
  }
bool hb_sanitize_context_t::check_range<OT::InstanceRecord>(OT::InstanceRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
15.0k
  {
338
15.0k
    unsigned m;
339
15.0k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
15.0k
     this->check_range (base, m);
341
15.0k
  }
bool hb_sanitize_context_t::check_range<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.06k
  {
338
1.06k
    unsigned m;
339
1.06k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.04k
     this->check_range (base, m);
341
1.06k
  }
bool hb_sanitize_context_t::check_range<OT::Offset<OT::NumType<true, unsigned int, 4u>, true> >(OT::Offset<OT::NumType<true, unsigned int, 4u>, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
353
  {
338
353
    unsigned m;
339
353
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
353
     this->check_range (base, m);
341
353
  }
bool hb_sanitize_context_t::check_range<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
308
  {
338
308
    unsigned m;
339
308
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
308
     this->check_range (base, m);
341
308
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.75k
  {
338
1.75k
    unsigned m;
339
1.75k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.75k
     this->check_range (base, m);
341
1.75k
  }
bool hb_sanitize_context_t::check_range<unsigned char>(unsigned char const*, unsigned int, unsigned int) const
Line
Count
Source
337
76.6k
  {
338
76.6k
    unsigned m;
339
76.6k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
76.6k
     this->check_range (base, m);
341
76.6k
  }
bool hb_sanitize_context_t::check_range<OT::NameRecord>(OT::NameRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
7.23k
  {
338
7.23k
    unsigned m;
339
7.23k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
7.23k
     this->check_range (base, m);
341
7.23k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_range<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
30.0k
  {
338
30.0k
    unsigned m;
339
30.0k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
30.0k
     this->check_range (base, m);
341
30.0k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
907
  {
338
907
    unsigned m;
339
907
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
907
     this->check_range (base, m);
341
907
  }
342
343
  template <typename T>
344
  bool check_range (const T *base,
345
        unsigned int a,
346
        unsigned int b,
347
        unsigned int c) const
348
8.10M
  {
349
8.10M
    unsigned m;
350
8.10M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
8.10M
     this->check_range (base, m, c);
352
8.10M
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int, unsigned int) const
Line
Count
Source
348
8.02M
  {
349
8.02M
    unsigned m;
350
8.02M
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
8.02M
     this->check_range (base, m, c);
352
8.02M
  }
bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int, unsigned int) const
Line
Count
Source
348
84.2k
  {
349
84.2k
    unsigned m;
350
84.2k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
84.2k
     this->check_range (base, m, c);
352
84.2k
  }
353
354
  template <typename T>
355
  HB_ALWAYS_INLINE
356
  bool check_array_sized (const T *base, unsigned int len, unsigned len_size) const
357
7.75M
  {
358
7.75M
    if (len_size >= 4)
359
158k
    {
360
158k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
293
  return false;
362
158k
    }
363
7.59M
    else
364
7.59M
      len = len * hb_static_size (T);
365
7.75M
    return this->check_range (base, len);
366
7.75M
  }
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int, unsigned int) const
Line
Count
Source
357
199k
  {
358
199k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
199k
    else
364
199k
      len = len * hb_static_size (T);
365
199k
    return this->check_range (base, len);
366
199k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
186k
  {
358
186k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
186k
    else
364
186k
      len = len * hb_static_size (T);
365
186k
    return this->check_range (base, len);
366
186k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
34.3k
  {
358
34.3k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
34.3k
    else
364
34.3k
      len = len * hb_static_size (T);
365
34.3k
    return this->check_range (base, len);
366
34.3k
  }
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.19M
  {
358
1.19M
    if (len_size >= 4)
359
682
    {
360
682
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
41
  return false;
362
682
    }
363
1.19M
    else
364
1.19M
      len = len * hb_static_size (T);
365
1.19M
    return this->check_range (base, len);
366
1.19M
  }
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int) const
Line
Count
Source
357
68.5k
  {
358
68.5k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
68.5k
    else
364
68.5k
      len = len * hb_static_size (T);
365
68.5k
    return this->check_range (base, len);
366
68.5k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.37k
  {
358
1.37k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.37k
    else
364
1.37k
      len = len * hb_static_size (T);
365
1.37k
    return this->check_range (base, len);
366
1.37k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.83k
  {
358
1.83k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.83k
    else
364
1.83k
      len = len * hb_static_size (T);
365
1.83k
    return this->check_range (base, len);
366
1.83k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
54.8k
  {
358
54.8k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
54.8k
    else
364
54.8k
      len = len * hb_static_size (T);
365
54.8k
    return this->check_range (base, len);
366
54.8k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.12k
  {
358
3.12k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
3.12k
    else
364
3.12k
      len = len * hb_static_size (T);
365
3.12k
    return this->check_range (base, len);
366
3.12k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
19.5k
  {
358
19.5k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
19.5k
    else
364
19.5k
      len = len * hb_static_size (T);
365
19.5k
    return this->check_range (base, len);
366
19.5k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::Script> >(OT::Record<OT::Script> const*, unsigned int, unsigned int) const
Line
Count
Source
357
54.7k
  {
358
54.7k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
54.7k
    else
364
54.7k
      len = len * hb_static_size (T);
365
54.7k
    return this->check_range (base, len);
366
54.7k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.06M
  {
358
2.06M
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
2.06M
    else
364
2.06M
      len = len * hb_static_size (T);
365
2.06M
    return this->check_range (base, len);
366
2.06M
  }
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*, unsigned int, unsigned int) const
Line
Count
Source
357
220k
  {
358
220k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
220k
    else
364
220k
      len = len * hb_static_size (T);
365
220k
    return this->check_range (base, len);
366
220k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*, unsigned int, unsigned int) const
Line
Count
Source
357
51.6k
  {
358
51.6k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
51.6k
    else
364
51.6k
      len = len * hb_static_size (T);
365
51.6k
    return this->check_range (base, len);
366
51.6k
  }
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned int, 3u> >(OT::NumType<true, unsigned int, 3u> const*, unsigned int, unsigned int) const
Line
Count
Source
357
818
  {
358
818
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
818
    else
364
818
      len = len * hb_static_size (T);
365
818
    return this->check_range (base, len);
366
818
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
31.7k
  {
358
31.7k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
31.7k
    else
364
31.7k
      len = len * hb_static_size (T);
365
31.7k
    return this->check_range (base, len);
366
31.7k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
308k
  {
358
308k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
308k
    else
364
308k
      len = len * hb_static_size (T);
365
308k
    return this->check_range (base, len);
366
308k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
208k
  {
358
208k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
208k
    else
364
208k
      len = len * hb_static_size (T);
365
208k
    return this->check_range (base, len);
366
208k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
27.7k
  {
358
27.7k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
27.7k
    else
364
27.7k
      len = len * hb_static_size (T);
365
27.7k
    return this->check_range (base, len);
366
27.7k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.94k
  {
358
3.94k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
3.94k
    else
364
3.94k
      len = len * hb_static_size (T);
365
3.94k
    return this->check_range (base, len);
366
3.94k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
14.0k
  {
358
14.0k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
14.0k
    else
364
14.0k
      len = len * hb_static_size (T);
365
14.0k
    return this->check_range (base, len);
366
14.0k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
5.40k
  {
358
5.40k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
5.40k
    else
364
5.40k
      len = len * hb_static_size (T);
365
5.40k
    return this->check_range (base, len);
366
5.40k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
33.5k
  {
358
33.5k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
33.5k
    else
364
33.5k
      len = len * hb_static_size (T);
365
33.5k
    return this->check_range (base, len);
366
33.5k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
86.4k
  {
358
86.4k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
86.4k
    else
364
86.4k
      len = len * hb_static_size (T);
365
86.4k
    return this->check_range (base, len);
366
86.4k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
7.12k
  {
358
7.12k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
7.12k
    else
364
7.12k
      len = len * hb_static_size (T);
365
7.12k
    return this->check_range (base, len);
366
7.12k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.81k
  {
358
3.81k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
3.81k
    else
364
3.81k
      len = len * hb_static_size (T);
365
3.81k
    return this->check_range (base, len);
366
3.81k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
31.4k
  {
358
31.4k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
31.4k
    else
364
31.4k
      len = len * hb_static_size (T);
365
31.4k
    return this->check_range (base, len);
366
31.4k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
42.2k
  {
358
42.2k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
42.2k
    else
364
42.2k
      len = len * hb_static_size (T);
365
42.2k
    return this->check_range (base, len);
366
42.2k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.51k
  {
358
4.51k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
4.51k
    else
364
4.51k
      len = len * hb_static_size (T);
365
4.51k
    return this->check_range (base, len);
366
4.51k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.69k
  {
358
2.69k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
2.69k
    else
364
2.69k
      len = len * hb_static_size (T);
365
2.69k
    return this->check_range (base, len);
366
2.69k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
5.71k
  {
358
5.71k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
5.71k
    else
364
5.71k
      len = len * hb_static_size (T);
365
5.71k
    return this->check_range (base, len);
366
5.71k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
30.2k
  {
358
30.2k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
30.2k
    else
364
30.2k
      len = len * hb_static_size (T);
365
30.2k
    return this->check_range (base, len);
366
30.2k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
58.8k
  {
358
58.8k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
58.8k
    else
364
58.8k
      len = len * hb_static_size (T);
365
58.8k
    return this->check_range (base, len);
366
58.8k
  }
bool hb_sanitize_context_t::check_array_sized<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.20M
  {
358
1.20M
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.20M
    else
364
1.20M
      len = len * hb_static_size (T);
365
1.20M
    return this->check_range (base, len);
366
1.20M
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
199k
  {
358
199k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
199k
    else
364
199k
      len = len * hb_static_size (T);
365
199k
    return this->check_range (base, len);
366
199k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.87k
  {
358
4.87k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
4.87k
    else
364
4.87k
      len = len * hb_static_size (T);
365
4.87k
    return this->check_range (base, len);
366
4.87k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.63k
  {
358
3.63k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
3.63k
    else
364
3.63k
      len = len * hb_static_size (T);
365
3.63k
    return this->check_range (base, len);
366
3.63k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
9.41k
  {
358
9.41k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
9.41k
    else
364
9.41k
      len = len * hb_static_size (T);
365
9.41k
    return this->check_range (base, len);
366
9.41k
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatureVariationRecord>(OT::FeatureVariationRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.69k
  {
358
1.69k
    if (len_size >= 4)
359
1.69k
    {
360
1.69k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
27
  return false;
362
1.69k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
1.66k
    return this->check_range (base, len);
366
1.69k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.57k
  {
358
2.57k
    if (len_size >= 4)
359
872
    {
360
872
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
9
  return false;
362
872
    }
363
1.70k
    else
364
1.70k
      len = len * hb_static_size (T);
365
2.56k
    return this->check_range (base, len);
366
2.57k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
38.2k
  {
358
38.2k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
38.2k
    else
364
38.2k
      len = len * hb_static_size (T);
365
38.2k
    return this->check_range (base, len);
366
38.2k
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
873
  {
358
873
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
873
    else
364
873
      len = len * hb_static_size (T);
365
873
    return this->check_range (base, len);
366
873
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
246
  {
358
246
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
246
    else
364
246
      len = len * hb_static_size (T);
365
246
    return this->check_range (base, len);
366
246
  }
bool hb_sanitize_context_t::check_array_sized<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int, unsigned int) const
Line
Count
Source
357
105
  {
358
105
    if (len_size >= 4)
359
105
    {
360
105
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
8
  return false;
362
105
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
97
    return this->check_range (base, len);
366
105
  }
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const
Line
Count
Source
357
13.7k
  {
358
13.7k
    if (len_size >= 4)
359
2.58k
    {
360
2.58k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
2.58k
    }
363
11.1k
    else
364
11.1k
      len = len * hb_static_size (T);
365
13.7k
    return this->check_range (base, len);
366
13.7k
  }
bool hb_sanitize_context_t::check_array_sized<AAT::KernPair>(AAT::KernPair const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.19k
  {
358
1.19k
    if (len_size >= 4)
359
1.19k
    {
360
1.19k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
1
  return false;
362
1.19k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
1.19k
    return this->check_range (base, len);
366
1.19k
  }
bool hb_sanitize_context_t::check_array_sized<AAT::Anchor>(AAT::Anchor const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.17k
  {
358
4.17k
    if (len_size >= 4)
359
4.17k
    {
360
4.17k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
9
  return false;
362
4.17k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
4.16k
    return this->check_range (base, len);
366
4.17k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.92k
  {
358
3.92k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
3.92k
    else
364
3.92k
      len = len * hb_static_size (T);
365
3.92k
    return this->check_range (base, len);
366
3.92k
  }
bool hb_sanitize_context_t::check_array_sized<OT::SparseVarRegionAxis>(OT::SparseVarRegionAxis const*, unsigned int, unsigned int) const
Line
Count
Source
357
22.7k
  {
358
22.7k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
22.7k
    else
364
22.7k
      len = len * hb_static_size (T);
365
22.7k
    return this->check_range (base, len);
366
22.7k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.32k
  {
358
4.32k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
4.32k
    else
364
4.32k
      len = len * hb_static_size (T);
365
4.32k
    return this->check_range (base, len);
366
4.32k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::EntryExitRecord>(OT::Layout::GPOS_impl::EntryExitRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
13.3k
  {
358
13.3k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
13.3k
    else
364
13.3k
      len = len * hb_static_size (T);
365
13.3k
    return this->check_range (base, len);
366
13.3k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
32.6k
  {
358
32.6k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
32.6k
    else
364
32.6k
      len = len * hb_static_size (T);
365
32.6k
    return this->check_range (base, len);
366
32.6k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
99.4k
  {
358
99.4k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
99.4k
    else
364
99.4k
      len = len * hb_static_size (T);
365
99.4k
    return this->check_range (base, len);
366
99.4k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
16.3k
  {
358
16.3k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
16.3k
    else
364
16.3k
      len = len * hb_static_size (T);
365
16.3k
    return this->check_range (base, len);
366
16.3k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
6.92k
  {
358
6.92k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
6.92k
    else
364
6.92k
      len = len * hb_static_size (T);
365
6.92k
    return this->check_range (base, len);
366
6.92k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
8.50k
  {
358
8.50k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
8.50k
    else
364
8.50k
      len = len * hb_static_size (T);
365
8.50k
    return this->check_range (base, len);
366
8.50k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
21.2k
  {
358
21.2k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
21.2k
    else
364
21.2k
      len = len * hb_static_size (T);
365
21.2k
    return this->check_range (base, len);
366
21.2k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
272
  {
358
272
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
272
    else
364
272
      len = len * hb_static_size (T);
365
272
    return this->check_range (base, len);
366
272
  }
bool hb_sanitize_context_t::check_array_sized<OT::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int, unsigned int) const
Line
Count
Source
357
3.68k
  {
358
3.68k
    if (len_size >= 4)
359
3.68k
    {
360
3.68k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
14
  return false;
362
3.68k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
3.67k
    return this->check_range (base, len);
366
3.68k
  }
bool hb_sanitize_context_t::check_array_sized<OT::UVSMapping>(OT::UVSMapping const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.54k
  {
358
4.54k
    if (len_size >= 4)
359
4.54k
    {
360
4.54k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
18
  return false;
362
4.54k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
4.52k
    return this->check_range (base, len);
366
4.54k
  }
bool hb_sanitize_context_t::check_array_sized<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
2.69k
  {
358
2.69k
    if (len_size >= 4)
359
2.69k
    {
360
2.69k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
14
  return false;
362
2.69k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
2.68k
    return this->check_range (base, len);
366
2.69k
  }
bool hb_sanitize_context_t::check_array_sized<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int, unsigned int) const
Line
Count
Source
357
12.6k
  {
358
12.6k
    if (len_size >= 4)
359
12.6k
    {
360
12.6k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
53
  return false;
362
12.6k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
12.6k
    return this->check_range (base, len);
366
12.6k
  }
bool hb_sanitize_context_t::check_array_sized<OT::EncodingRecord>(OT::EncodingRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
48.3k
  {
358
48.3k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
48.3k
    else
364
48.3k
      len = len * hb_static_size (T);
365
48.3k
    return this->check_range (base, len);
366
48.3k
  }
bool hb_sanitize_context_t::check_array_sized<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*, unsigned int, unsigned int) const
Line
Count
Source
357
292k
  {
358
292k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
292k
    else
364
292k
      len = len * hb_static_size (T);
365
292k
    return this->check_range (base, len);
366
292k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*, unsigned int, unsigned int) const
Line
Count
Source
357
405k
  {
358
405k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
405k
    else
364
405k
      len = len * hb_static_size (T);
365
405k
    return this->check_range (base, len);
366
405k
  }
bool hb_sanitize_context_t::check_array_sized<OT::ClipRecord>(OT::ClipRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
6.62k
  {
358
6.62k
    if (len_size >= 4)
359
6.62k
    {
360
6.62k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
24
  return false;
362
6.62k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
6.60k
    return this->check_range (base, len);
366
6.62k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
12.9k
  {
358
12.9k
    if (len_size >= 4)
359
12.9k
    {
360
12.9k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
13
  return false;
362
12.9k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
12.8k
    return this->check_range (base, len);
366
12.9k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
5.75k
  {
358
5.75k
    if (len_size >= 4)
359
5.75k
    {
360
5.75k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
17
  return false;
362
5.75k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
5.74k
    return this->check_range (base, len);
366
5.75k
  }
bool hb_sanitize_context_t::check_array_sized<OT::TableRecord>(OT::TableRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
96.5k
  {
358
96.5k
    if (len_size >= 4)
359
96.5k
    {
360
96.5k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
96.5k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
96.5k
    return this->check_range (base, len);
366
96.5k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
578
  {
358
578
    if (len_size >= 4)
359
578
    {
360
578
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
15
  return false;
362
578
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
563
    return this->check_range (base, len);
366
578
  }
bool hb_sanitize_context_t::check_array_sized<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
513
  {
358
513
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
513
    else
364
513
      len = len * hb_static_size (T);
365
513
    return this->check_range (base, len);
366
513
  }
bool hb_sanitize_context_t::check_array_sized<OT::AxisValueMap>(OT::AxisValueMap const*, unsigned int, unsigned int) const
Line
Count
Source
357
17.0k
  {
358
17.0k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
17.0k
    else
364
17.0k
      len = len * hb_static_size (T);
365
17.0k
    return this->check_range (base, len);
366
17.0k
  }
bool hb_sanitize_context_t::check_array_sized<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.01k
  {
358
1.01k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.01k
    else
364
1.01k
      len = len * hb_static_size (T);
365
1.01k
    return this->check_range (base, len);
366
1.01k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int, unsigned int) const
Line
Count
Source
357
584
  {
358
584
    if (len_size >= 4)
359
584
    {
360
584
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
4
  return false;
362
584
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
580
    return this->check_range (base, len);
366
584
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
709
  {
358
709
    if (len_size >= 4)
359
709
    {
360
709
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
19
  return false;
362
709
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
690
    return this->check_range (base, len);
366
709
  }
bool hb_sanitize_context_t::check_array_sized<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.31k
  {
358
1.31k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.31k
    else
364
1.31k
      len = len * hb_static_size (T);
365
1.31k
    return this->check_range (base, len);
366
1.31k
  }
bool hb_sanitize_context_t::check_array_sized<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int, unsigned int) const
Line
Count
Source
357
656
  {
358
656
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
656
    else
364
656
      len = len * hb_static_size (T);
365
656
    return this->check_range (base, len);
366
656
  }
bool hb_sanitize_context_t::check_array_sized<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int, unsigned int) const
Line
Count
Source
357
621
  {
358
621
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
621
    else
364
621
      len = len * hb_static_size (T);
365
621
    return this->check_range (base, len);
366
621
  }
bool hb_sanitize_context_t::check_array_sized<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*, unsigned int, unsigned int) const
Line
Count
Source
357
170
  {
358
170
    if (len_size >= 4)
359
170
    {
360
170
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
6
  return false;
362
170
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
164
    return this->check_range (base, len);
366
170
  }
bool hb_sanitize_context_t::check_array_sized<OT::DataMap>(OT::DataMap const*, unsigned int, unsigned int) const
Line
Count
Source
357
36
  {
358
36
    if (len_size >= 4)
359
36
    {
360
36
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
1
  return false;
362
36
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
35
    return this->check_range (base, len);
366
36
  }
bool hb_sanitize_context_t::check_array_sized<OT::VertOriginMetric>(OT::VertOriginMetric const*, unsigned int, unsigned int) const
Line
Count
Source
357
501
  {
358
501
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
501
    else
364
501
      len = len * hb_static_size (T);
365
501
    return this->check_range (base, len);
366
501
  }
bool hb_sanitize_context_t::check_array_sized<OT::Tag>(OT::Tag const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.05k
  {
358
1.05k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.05k
    else
364
1.05k
      len = len * hb_static_size (T);
365
1.05k
    return this->check_range (base, len);
366
1.05k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.36k
  {
358
1.36k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.36k
    else
364
1.36k
      len = len * hb_static_size (T);
365
1.36k
    return this->check_range (base, len);
366
1.36k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.70k
  {
358
4.70k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
4.70k
    else
364
4.70k
      len = len * hb_static_size (T);
365
4.70k
    return this->check_range (base, len);
366
4.70k
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
5.46k
  {
358
5.46k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
5.46k
    else
364
5.46k
      len = len * hb_static_size (T);
365
5.46k
    return this->check_range (base, len);
366
5.46k
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
7.58k
  {
358
7.58k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
7.58k
    else
364
7.58k
      len = len * hb_static_size (T);
365
7.58k
    return this->check_range (base, len);
366
7.58k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
1.59k
  {
358
1.59k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
1.59k
    else
364
1.59k
      len = len * hb_static_size (T);
365
1.59k
    return this->check_range (base, len);
366
1.59k
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
662
  {
358
662
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
662
    else
364
662
      len = len * hb_static_size (T);
365
662
    return this->check_range (base, len);
366
662
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
16.4k
  {
358
16.4k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
16.4k
    else
364
16.4k
      len = len * hb_static_size (T);
365
16.4k
    return this->check_range (base, len);
366
16.4k
  }
bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
24.2k
  {
358
24.2k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
24.2k
    else
364
24.2k
      len = len * hb_static_size (T);
365
24.2k
    return this->check_range (base, len);
366
24.2k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::GaspRange>(OT::GaspRange const*, unsigned int, unsigned int) const
367
368
  template <typename T>
369
  bool check_array (const T *base, unsigned int len) const
370
18.9M
  {
371
18.9M
    return this->check_range (base, len, hb_static_size (T));
372
18.9M
  }
bool hb_sanitize_context_t::check_array<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int) const
Line
Count
Source
370
19.3k
  {
371
19.3k
    return this->check_range (base, len, hb_static_size (T));
372
19.3k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
Line
Count
Source
370
5.79k
  {
371
5.79k
    return this->check_range (base, len, hb_static_size (T));
372
5.79k
  }
bool hb_sanitize_context_t::check_array<OT::LookupRecord>(OT::LookupRecord const*, unsigned int) const
Line
Count
Source
370
5.72k
  {
371
5.72k
    return this->check_range (base, len, hb_static_size (T));
372
5.72k
  }
bool hb_sanitize_context_t::check_array<AAT::Feature>(AAT::Feature const*, unsigned int) const
Line
Count
Source
370
5.61k
  {
371
5.61k
    return this->check_range (base, len, hb_static_size (T));
372
5.61k
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int) const
Line
Count
Source
370
3.05M
  {
371
3.05M
    return this->check_range (base, len, hb_static_size (T));
372
3.05M
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int) const
Line
Count
Source
370
329k
  {
371
329k
    return this->check_range (base, len, hb_static_size (T));
372
329k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int) const
Line
Count
Source
370
6.02k
  {
371
6.02k
    return this->check_range (base, len, hb_static_size (T));
372
6.02k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const
Line
Count
Source
370
841
  {
371
841
    return this->check_range (base, len, hb_static_size (T));
372
841
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int) const
Line
Count
Source
370
455
  {
371
455
    return this->check_range (base, len, hb_static_size (T));
372
455
  }
bool hb_sanitize_context_t::check_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int) const
Line
Count
Source
370
13.3M
  {
371
13.3M
    return this->check_range (base, len, hb_static_size (T));
372
13.3M
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int) const
Line
Count
Source
370
567
  {
371
567
    return this->check_range (base, len, hb_static_size (T));
372
567
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const
Line
Count
Source
370
1.46k
  {
371
1.46k
    return this->check_range (base, len, hb_static_size (T));
372
1.46k
  }
bool hb_sanitize_context_t::check_array<OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > >(OT::UnsizedArrayOf<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> > const*, unsigned int) const
Line
Count
Source
370
4.77k
  {
371
4.77k
    return this->check_range (base, len, hb_static_size (T));
372
4.77k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const
Line
Count
Source
370
5.43k
  {
371
5.43k
    return this->check_range (base, len, hb_static_size (T));
372
5.43k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const
Line
Count
Source
370
4.40k
  {
371
4.40k
    return this->check_range (base, len, hb_static_size (T));
372
4.40k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const
Line
Count
Source
370
2.39k
  {
371
2.39k
    return this->check_range (base, len, hb_static_size (T));
372
2.39k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int) const
Line
Count
Source
370
422
  {
371
422
    return this->check_range (base, len, hb_static_size (T));
372
422
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int) const
Line
Count
Source
370
734
  {
371
734
    return this->check_range (base, len, hb_static_size (T));
372
734
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int) const
Line
Count
Source
370
8.54k
  {
371
8.54k
    return this->check_range (base, len, hb_static_size (T));
372
8.54k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const
Line
Count
Source
370
1.65k
  {
371
1.65k
    return this->check_range (base, len, hb_static_size (T));
372
1.65k
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int) const
Line
Count
Source
370
1.23M
  {
371
1.23M
    return this->check_range (base, len, hb_static_size (T));
372
1.23M
  }
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int) const
Line
Count
Source
370
91
  {
371
91
    return this->check_range (base, len, hb_static_size (T));
372
91
  }
bool hb_sanitize_context_t::check_array<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int) const
Line
Count
Source
370
66
  {
371
66
    return this->check_range (base, len, hb_static_size (T));
372
66
  }
bool hb_sanitize_context_t::check_array<AAT::FeatureName>(AAT::FeatureName const*, unsigned int) const
Line
Count
Source
370
35
  {
371
35
    return this->check_range (base, len, hb_static_size (T));
372
35
  }
bool hb_sanitize_context_t::check_array<AAT::SettingName>(AAT::SettingName const*, unsigned int) const
Line
Count
Source
370
595
  {
371
595
    return this->check_range (base, len, hb_static_size (T));
372
595
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*, unsigned int) const
Line
Count
Source
370
235k
  {
371
235k
    return this->check_range (base, len, hb_static_size (T));
372
235k
  }
bool hb_sanitize_context_t::check_array<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int) const
Line
Count
Source
370
3.80k
  {
371
3.80k
    return this->check_range (base, len, hb_static_size (T));
372
3.80k
  }
bool hb_sanitize_context_t::check_array<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int) const
Line
Count
Source
370
4.76k
  {
371
4.76k
    return this->check_range (base, len, hb_static_size (T));
372
4.76k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
Line
Count
Source
370
4.52k
  {
371
4.52k
    return this->check_range (base, len, hb_static_size (T));
372
4.52k
  }
bool hb_sanitize_context_t::check_array<OT::Index>(OT::Index const*, unsigned int) const
Line
Count
Source
370
516
  {
371
516
    return this->check_range (base, len, hb_static_size (T));
372
516
  }
bool hb_sanitize_context_t::check_array<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int) const
Line
Count
Source
370
20.0k
  {
371
20.0k
    return this->check_range (base, len, hb_static_size (T));
372
20.0k
  }
bool hb_sanitize_context_t::check_array<OT::LayerRecord>(OT::LayerRecord const*, unsigned int) const
Line
Count
Source
370
19.5k
  {
371
19.5k
    return this->check_range (base, len, hb_static_size (T));
372
19.5k
  }
bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >(OT::HBFixed<OT::NumType<true, short, 2u>, 14u> const*, unsigned int) const
Line
Count
Source
370
9.68k
  {
371
9.68k
    return this->check_range (base, len, hb_static_size (T));
372
9.68k
  }
bool hb_sanitize_context_t::check_array<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int) const
Line
Count
Source
370
476k
  {
371
476k
    return this->check_range (base, len, hb_static_size (T));
372
476k
  }
bool hb_sanitize_context_t::check_array<OT::AxisRecord>(OT::AxisRecord const*, unsigned int) const
Line
Count
Source
370
15.2k
  {
371
15.2k
    return this->check_range (base, len, hb_static_size (T));
372
15.2k
  }
bool hb_sanitize_context_t::check_array<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int) const
Line
Count
Source
370
1.06k
  {
371
1.06k
    return this->check_range (base, len, hb_static_size (T));
372
1.06k
  }
bool hb_sanitize_context_t::check_array<OT::Offset<OT::NumType<true, unsigned int, 4u>, true> >(OT::Offset<OT::NumType<true, unsigned int, 4u>, true> const*, unsigned int) const
Line
Count
Source
370
353
  {
371
353
    return this->check_range (base, len, hb_static_size (T));
372
353
  }
bool hb_sanitize_context_t::check_array<OT::Offset<OT::NumType<true, unsigned short, 2u>, true> >(OT::Offset<OT::NumType<true, unsigned short, 2u>, true> const*, unsigned int) const
Line
Count
Source
370
308
  {
371
308
    return this->check_range (base, len, hb_static_size (T));
372
308
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXGlyph, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int) const
Line
Count
Source
370
1.75k
  {
371
1.75k
    return this->check_range (base, len, hb_static_size (T));
372
1.75k
  }
bool hb_sanitize_context_t::check_array<unsigned char>(unsigned char const*, unsigned int) const
Line
Count
Source
370
76.6k
  {
371
76.6k
    return this->check_range (base, len, hb_static_size (T));
372
76.6k
  }
bool hb_sanitize_context_t::check_array<OT::NameRecord>(OT::NameRecord const*, unsigned int) const
Line
Count
Source
370
7.23k
  {
371
7.23k
    return this->check_range (base, len, hb_static_size (T));
372
7.23k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
bool hb_sanitize_context_t::check_array<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int) const
Line
Count
Source
370
30.0k
  {
371
30.0k
    return this->check_range (base, len, hb_static_size (T));
372
30.0k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
Line
Count
Source
370
907
  {
371
907
    return this->check_range (base, len, hb_static_size (T));
372
907
  }
373
374
  template <typename T>
375
  bool check_array (const T *base,
376
        unsigned int a,
377
        unsigned int b) const
378
8.10M
  {
379
8.10M
    return this->check_range (base, hb_static_size (T), a, b);
380
8.10M
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
Line
Count
Source
378
8.02M
  {
379
8.02M
    return this->check_range (base, hb_static_size (T), a, b);
380
8.02M
  }
bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const
Line
Count
Source
378
84.2k
  {
379
84.2k
    return this->check_range (base, hb_static_size (T), a, b);
380
84.2k
  }
381
382
  bool check_start_recursion (int max_depth)
383
5.15M
  {
384
5.15M
    if (unlikely (recursion_depth >= max_depth)) return false;
385
5.15M
    return ++recursion_depth;
386
5.15M
  }
387
388
  bool end_recursion (bool result)
389
5.15M
  {
390
5.15M
    recursion_depth--;
391
5.15M
    return result;
392
5.15M
  }
393
394
  template <typename Type>
395
#ifndef HB_OPTIMIZE_SIZE
396
  HB_ALWAYS_INLINE
397
#endif
398
  bool check_struct (const Type *obj) const
399
918M
  {
400
918M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
918M
    else
403
918M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
918M
  }
bool hb_sanitize_context_t::check_struct<OT::FixedVersion<OT::NumType<true, unsigned short, 2u> > >(OT::FixedVersion<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
139k
  {
400
139k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
139k
    else
403
139k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
139k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
120k
  {
400
120k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
120k
    else
403
120k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
120k
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*) const
Line
Count
Source
399
243M
  {
400
243M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
243M
    else
403
243M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
243M
  }
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::SmallTypes> >(OT::ClassDefFormat1_3<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
15.6k
  {
400
15.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.6k
    else
403
15.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.6k
  }
bool hb_sanitize_context_t::check_struct<OT::ClassDefFormat1_3<OT::Layout::MediumTypes> >(OT::ClassDefFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
6.42k
  {
400
6.42k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.42k
    else
403
6.42k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.42k
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned int, 3u> >(OT::NumType<true, unsigned int, 3u> const*) const
Line
Count
Source
399
30.6k
  {
400
30.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30.6k
    else
403
30.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30.6k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
8.10k
  {
400
8.10k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.10k
    else
403
8.10k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.10k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
997k
  {
400
997k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
997k
    else
403
997k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
997k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AttachPoint, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
176k
  {
400
176k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
176k
    else
403
176k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
176k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
7.78k
  {
400
7.78k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.78k
    else
403
7.78k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.78k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
126k
  {
400
126k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
126k
    else
403
126k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
126k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::CaretValue, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
129M
  {
400
129M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
129M
    else
403
129M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
129M
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat1>(OT::CaretValueFormat1 const*) const
Line
Count
Source
399
2.52M
  {
400
2.52M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.52M
    else
403
2.52M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.52M
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat2>(OT::CaretValueFormat2 const*) const
Line
Count
Source
399
1.32M
  {
400
1.32M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.32M
    else
403
1.32M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.32M
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat3>(OT::CaretValueFormat3 const*) const
Line
Count
Source
399
657k
  {
400
657k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
657k
    else
403
657k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
657k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
73.5M
  {
400
73.5M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
73.5M
    else
403
73.5M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
73.5M
  }
bool hb_sanitize_context_t::check_struct<OT::HintingDevice>(OT::HintingDevice const*) const
Line
Count
Source
399
3.09M
  {
400
3.09M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.09M
    else
403
3.09M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.09M
  }
bool hb_sanitize_context_t::check_struct<OT::VariationDevice>(OT::VariationDevice const*) const
Line
Count
Source
399
590k
  {
400
590k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
590k
    else
403
590k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
590k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
5.69k
  {
400
5.69k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.69k
    else
403
5.69k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.69k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
18.7k
  {
400
18.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.7k
    else
403
18.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.7k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
25.6k
  {
400
25.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
25.6k
    else
403
25.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
25.6k
  }
bool hb_sanitize_context_t::check_struct<OT::ItemVariationStore>(OT::ItemVariationStore const*) const
Line
Count
Source
399
22.0k
  {
400
22.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
22.0k
    else
403
22.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
22.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
20.5k
  {
400
20.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20.5k
    else
403
20.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20.5k
  }
bool hb_sanitize_context_t::check_struct<OT::VarRegionList>(OT::VarRegionList const*) const
Line
Count
Source
399
19.8k
  {
400
19.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19.8k
    else
403
19.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19.8k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::VarData, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
146k
  {
400
146k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
146k
    else
403
146k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
146k
  }
bool hb_sanitize_context_t::check_struct<OT::VarData>(OT::VarData const*) const
Line
Count
Source
399
140k
  {
400
140k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
140k
    else
403
140k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
140k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
47.5k
  {
400
47.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
47.5k
    else
403
47.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
47.5k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
271
  {
400
271
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
271
    else
403
271
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
271
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::LigCaretList, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
221
  {
400
221
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
221
    else
403
221
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
221
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
176
  {
400
176
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
176
    else
403
176
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
176
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
57.3k
  {
400
57.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
57.3k
    else
403
57.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
57.3k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Script> >(OT::Record<OT::Script> const*) const
Line
Count
Source
399
3.34M
  {
400
3.34M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.34M
    else
403
3.34M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.34M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Script, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Script, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
3.34M
  {
400
3.34M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.34M
    else
403
3.34M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.34M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LangSys, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LangSys, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
40.6M
  {
400
40.6M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.6M
    else
403
40.6M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.6M
  }
bool hb_sanitize_context_t::check_struct<OT::LangSys>(OT::LangSys const*) const
Line
Count
Source
399
1.83M
  {
400
1.83M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.83M
    else
403
1.83M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.83M
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*) const
Line
Count
Source
399
40.3M
  {
400
40.3M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.3M
    else
403
40.3M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.3M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
54.6k
  {
400
54.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
54.6k
    else
403
54.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
54.6k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*) const
Line
Count
Source
399
577k
  {
400
577k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
577k
    else
403
577k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
577k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
577k
  {
400
577k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
577k
    else
403
577k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
577k
  }
bool hb_sanitize_context_t::check_struct<OT::Feature>(OT::Feature const*) const
Line
Count
Source
399
232k
  {
400
232k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
232k
    else
403
232k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
232k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureParams, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::FeatureParams, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
231k
  {
400
231k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
231k
    else
403
231k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
231k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsSize>(OT::FeatureParamsSize const*) const
Line
Count
Source
399
700
  {
400
700
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
700
    else
403
700
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
700
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsStylisticSet>(OT::FeatureParamsStylisticSet const*) const
Line
Count
Source
399
4.76k
  {
400
4.76k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.76k
    else
403
4.76k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.76k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsCharacterVariants>(OT::FeatureParamsCharacterVariants const*) const
Line
Count
Source
399
837
  {
400
837
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
837
    else
403
837
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
837
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
32.0k
  {
400
32.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
32.0k
    else
403
32.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
32.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
234k
  {
400
234k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
234k
    else
403
234k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
234k
  }
bool hb_sanitize_context_t::check_struct<OT::Lookup>(OT::Lookup const*) const
Line
Count
Source
399
309k
  {
400
309k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
309k
    else
403
309k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
309k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
13.9M
  {
400
13.9M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.9M
    else
403
13.9M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.9M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::SmallTypes> >(OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
33.4k
  {
400
33.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
33.4k
    else
403
33.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
33.4k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GSUB_impl::SingleSubstFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
1.82k
  {
400
1.82k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.82k
    else
403
1.82k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.82k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::Common::Coverage, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
93.8k
  {
400
93.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
93.8k
    else
403
93.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
93.8k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
288k
  {
400
288k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
288k
    else
403
288k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
288k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Sequence<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
5.18k
  {
400
5.18k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.18k
    else
403
5.18k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.18k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
219k
  {
400
219k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
219k
    else
403
219k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
219k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::AlternateSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
8.99k
  {
400
8.99k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.99k
    else
403
8.99k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.99k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
112k
  {
400
112k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
112k
    else
403
112k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
112k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
13.0M
  {
400
13.0M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.0M
    else
403
13.0M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.0M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::LigatureSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
9.78k
  {
400
9.78k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.78k
    else
403
9.78k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.78k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
33.3k
  {
400
33.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
33.3k
    else
403
33.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
33.3k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
66.6k
  {
400
66.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
66.6k
    else
403
66.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
66.6k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.59M
  {
400
1.59M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.59M
    else
403
1.59M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.59M
  }
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::SmallTypes> >(OT::Rule<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
350k
  {
400
350k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
350k
    else
403
350k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
350k
  }
bool hb_sanitize_context_t::check_struct<OT::ContextFormat3>(OT::ContextFormat3 const*) const
Line
Count
Source
399
5.81k
  {
400
5.81k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.81k
    else
403
5.81k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.81k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
4.49k
  {
400
4.49k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.49k
    else
403
4.49k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.49k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
39.4k
  {
400
39.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
39.4k
    else
403
39.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
39.4k
  }
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::MediumTypes> >(OT::Rule<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
13.8k
  {
400
13.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.8k
    else
403
13.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.8k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
3.42k
  {
400
3.42k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.42k
    else
403
3.42k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.42k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
831k
  {
400
831k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
831k
    else
403
831k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
831k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
25.4M
  {
400
25.4M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
25.4M
    else
403
25.4M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
25.4M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
6.06k
  {
400
6.06k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.06k
    else
403
6.06k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.06k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
42.5k
  {
400
42.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
42.5k
    else
403
42.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
42.5k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
7.75k
  {
400
7.75k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.75k
    else
403
7.75k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.75k
  }
bool hb_sanitize_context_t::check_struct<OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> >(OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst> const*) const
Line
Count
Source
399
22.2k
  {
400
22.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
22.2k
    else
403
22.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
22.2k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureVariations, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::FeatureVariations, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
2.73k
  {
400
2.73k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.73k
    else
403
2.73k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.73k
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*) const
Line
Count
Source
399
5.80M
  {
400
5.80M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.80M
    else
403
5.80M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.80M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionSet, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ConditionSet, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
3.00k
  {
400
3.00k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.00k
    else
403
3.00k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.00k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
7.88k
  {
400
7.88k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.88k
    else
403
7.88k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.88k
  }
bool hb_sanitize_context_t::check_struct<OT::ConditionAxisRange>(OT::ConditionAxisRange const*) const
Line
Count
Source
399
7.95k
  {
400
7.95k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.95k
    else
403
7.95k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.95k
  }
bool hb_sanitize_context_t::check_struct<OT::ConditionValue>(OT::ConditionValue const*) const
Line
Count
Source
399
3.03k
  {
400
3.03k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.03k
    else
403
3.03k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.03k
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*) const
Line
Count
Source
399
5.36M
  {
400
5.36M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.36M
    else
403
5.36M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.36M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Condition, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
138k
  {
400
138k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
138k
    else
403
138k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
138k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::FeatureTableSubstitution, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::FeatureTableSubstitution, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
2.48k
  {
400
2.48k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.48k
    else
403
2.48k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.48k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*) const
Line
Count
Source
399
2.46k
  {
400
2.46k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.46k
    else
403
2.46k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.46k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Feature, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
2.46k
  {
400
2.46k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.46k
    else
403
2.46k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.46k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
1.52k
  {
400
1.52k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.52k
    else
403
1.52k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.52k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
1.29k
  {
400
1.29k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.29k
    else
403
1.29k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.29k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
478
  {
400
478
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
478
    else
403
478
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
478
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
1.68k
  {
400
1.68k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.68k
    else
403
1.68k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.68k
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, void> >(AAT::StateTable<AAT::ExtendedTypes, void> const*) const
Line
Count
Source
399
479
  {
400
479
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
479
    else
403
479
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
479
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
4.26k
  {
400
4.26k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.26k
    else
403
4.26k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.26k
  }
bool hb_sanitize_context_t::check_struct<OT::VarSizedBinSearchHeader>(OT::VarSizedBinSearchHeader const*) const
Line
Count
Source
399
3.10k
  {
400
3.10k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.10k
    else
403
3.10k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.10k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
3.37k
  {
400
3.37k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.37k
    else
403
3.37k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.37k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
3.36k
  {
400
3.36k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.36k
    else
403
3.36k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.36k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
715
  {
400
715
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
715
    else
403
715
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
715
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
203
  {
400
203
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
203
    else
403
203
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
203
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*) const
Line
Count
Source
399
533
  {
400
533
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
533
    else
403
533
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
533
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
455
  {
400
455
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
455
    else
403
455
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
455
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
2.80k
  {
400
2.80k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.80k
    else
403
2.80k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.80k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::HBGlyphID16> >(AAT::LookupSegmentArray<OT::HBGlyphID16> const*) const
Line
Count
Source
399
1.27k
  {
400
1.27k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.27k
    else
403
1.27k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.27k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
1.27k
  {
400
1.27k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.27k
    else
403
1.27k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.27k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::HBGlyphID16> >(AAT::LookupFormat8<OT::HBGlyphID16> const*) const
Line
Count
Source
399
264
  {
400
264
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
264
    else
403
264
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
264
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::HBGlyphID16> >(AAT::LookupFormat10<OT::HBGlyphID16> const*) const
Line
Count
Source
399
75
  {
400
75
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
75
    else
403
75
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
75
  }
bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ExtendedTypes> >(AAT::LigatureSubtable<AAT::ExtendedTypes> const*) const
Line
Count
Source
399
313
  {
400
313
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
313
    else
403
313
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
313
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> const*) const
Line
Count
Source
399
312
  {
400
312
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
312
    else
403
312
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
312
  }
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ExtendedTypes> >(AAT::InsertionSubtable<AAT::ExtendedTypes> const*) const
Line
Count
Source
399
1.22k
  {
400
1.22k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.22k
    else
403
1.22k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.22k
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*) const
Line
Count
Source
399
1.22k
  {
400
1.22k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.22k
    else
403
1.22k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.22k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
2.60k
  {
400
2.60k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.60k
    else
403
2.60k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.60k
  }
bool hb_sanitize_context_t::check_struct<AAT::ltag>(AAT::ltag const*) const
Line
Count
Source
399
109
  {
400
109
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
109
    else
403
109
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
109
  }
bool hb_sanitize_context_t::check_struct<AAT::FTStringRange>(AAT::FTStringRange const*) const
Line
Count
Source
399
24.1k
  {
400
24.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
24.1k
    else
403
24.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
24.1k
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, void> >(AAT::StateTable<AAT::ObsoleteTypes, void> const*) const
Line
Count
Source
399
4.21k
  {
400
4.21k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.21k
    else
403
4.21k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.21k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
10.5k
  {
400
10.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.5k
    else
403
10.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.5k
  }
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::NumType<true, unsigned char, 1u> > >(AAT::ClassTable<OT::NumType<true, unsigned char, 1u> > const*) const
Line
Count
Source
399
10.5k
  {
400
10.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.5k
    else
403
10.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.5k
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*) const
Line
Count
Source
399
4.47k
  {
400
4.47k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.47k
    else
403
4.47k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.47k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
4.40k
  {
400
4.40k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.40k
    else
403
4.40k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.40k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ObsoleteTypes> >(AAT::LigatureSubtable<AAT::ObsoleteTypes> const*) const
Line
Count
Source
399
3.21k
  {
400
3.21k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.21k
    else
403
3.21k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.21k
  }
bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ObsoleteTypes> >(AAT::InsertionSubtable<AAT::ObsoleteTypes> const*) const
Line
Count
Source
399
1.89k
  {
400
1.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.89k
    else
403
1.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.89k
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*) const
Line
Count
Source
399
1.89k
  {
400
1.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.89k
    else
403
1.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.89k
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableHeader>(AAT::KerxSubTableHeader const*) const
Line
Count
Source
399
4.49k
  {
400
4.49k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.49k
    else
403
4.49k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.49k
  }
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::NumType<true, unsigned int, 4u> > >(OT::BinSearchHeader<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
259
  {
400
259
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
259
    else
403
259
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
259
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> const*) const
Line
Count
Source
399
330
  {
400
330
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
330
    else
403
330
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
330
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> const*) const
Line
Count
Source
399
328
  {
400
328
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
328
    else
403
328
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
328
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> const*) const
Line
Count
Source
399
148
  {
400
148
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
148
    else
403
148
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
148
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> const*) const
Line
Count
Source
399
487
  {
400
487
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
487
    else
403
487
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
487
  }
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*) const
Line
Count
Source
399
485
  {
400
485
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
485
    else
403
485
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
485
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> const*) const
Line
Count
Source
399
747
  {
400
747
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
747
    else
403
747
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
747
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
790
  {
400
790
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
790
    else
403
790
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
790
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
1.28k
  {
400
1.28k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.28k
    else
403
1.28k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.28k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
1.27k
  {
400
1.27k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.27k
    else
403
1.27k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.27k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
21
  {
400
21
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21
    else
403
21
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
116
  {
400
116
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
116
    else
403
116
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
116
  }
bool hb_sanitize_context_t::check_struct<AAT::ankr>(AAT::ankr const*) const
Line
Count
Source
399
416
  {
400
416
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
416
    else
403
416
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
416
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
362
  {
400
362
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
362
    else
403
362
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
362
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
4.22k
  {
400
4.22k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.22k
    else
403
4.22k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.22k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Line
Count
Source
399
828
  {
400
828
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
828
    else
403
828
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
828
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Line
Count
Source
399
1.55k
  {
400
1.55k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.55k
    else
403
1.55k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.55k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
1.54k
  {
400
1.54k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.54k
    else
403
1.54k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.54k
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Line
Count
Source
399
830
  {
400
830
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
830
    else
403
830
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
830
  }
bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Line
Count
Source
399
57
  {
400
57
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
57
    else
403
57
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
57
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*) const
Line
Count
Source
399
1.05M
  {
400
1.05M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.05M
    else
403
1.05M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.05M
  }
bool hb_sanitize_context_t::check_struct<OT::NumType<true, int, 4u> >(OT::NumType<true, int, 4u> const*) const
Line
Count
Source
399
110k
  {
400
110k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
110k
    else
403
110k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
110k
  }
bool hb_sanitize_context_t::check_struct<AAT::trak>(AAT::trak const*) const
Line
Count
Source
399
178
  {
400
178
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
178
    else
403
178
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
178
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
309
  {
400
309
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
309
    else
403
309
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
309
  }
bool hb_sanitize_context_t::check_struct<AAT::TrackData>(AAT::TrackData const*) const
Line
Count
Source
399
95
  {
400
95
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
95
    else
403
95
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
95
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
91
  {
400
91
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
91
    else
403
91
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
91
  }
bool hb_sanitize_context_t::check_struct<AAT::TrackTableEntry>(AAT::TrackTableEntry const*) const
Line
Count
Source
399
50.4k
  {
400
50.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
50.4k
    else
403
50.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
50.4k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
50.4k
  {
400
50.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
50.4k
    else
403
50.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
50.4k
  }
bool hb_sanitize_context_t::check_struct<AAT::feat>(AAT::feat const*) const
Line
Count
Source
399
42
  {
400
42
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
42
    else
403
42
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
42
  }
bool hb_sanitize_context_t::check_struct<AAT::FeatureName>(AAT::FeatureName const*) const
Line
Count
Source
399
595
  {
400
595
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
595
    else
403
595
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
595
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LONGDATETIME>(OT::LONGDATETIME const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VarRegionAxis>(OT::VarRegionAxis const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SparseVarRegionAxis>(OT::SparseVarRegionAxis const*) const
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
24.6k
  {
400
24.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
24.6k
    else
403
24.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
24.6k
  }
bool hb_sanitize_context_t::check_struct<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > >(OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
40.6k
  {
400
40.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.6k
    else
403
40.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.6k
  }
bool hb_sanitize_context_t::check_struct<OT::MultiItemVariationStore>(OT::MultiItemVariationStore const*) const
Line
Count
Source
399
4.86k
  {
400
4.86k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.86k
    else
403
4.86k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.86k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
4.72k
  {
400
4.72k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.72k
    else
403
4.72k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.72k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
6.89k
  {
400
6.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.89k
    else
403
6.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.89k
  }
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > >(OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
11.9k
  {
400
11.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.9k
    else
403
11.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.9k
  }
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned int, 4u> > >(OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
611
  {
400
611
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
611
    else
403
611
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
611
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Entry<void> >(AAT::Entry<void> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Anchor>(AAT::Anchor const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat0Part>(AAT::BaselineTableFormat0Part const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat1Part>(AAT::BaselineTableFormat1Part const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentSingle<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSingle<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat2Part>(AAT::BaselineTableFormat2Part const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::BaselineTableFormat3Part>(AAT::BaselineTableFormat3Part const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::bsln>(AAT::bsln const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::SettingName>(AAT::SettingName const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::Feature>(AAT::Feature const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::HBGlyphID16> >(AAT::LookupSegmentSingle<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::HBGlyphID16> >(AAT::LookupSingle<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ActionSubrecordHeader>(AAT::ActionSubrecordHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::DecompositionAction>(AAT::DecompositionAction const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::UnconditionalAddGlyphAction>(AAT::UnconditionalAddGlyphAction const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ConditionalAddGlyphAction>(AAT::ConditionalAddGlyphAction const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::DuctileGlyphAction>(AAT::DuctileGlyphAction const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::RepeatedAddGlyphAction>(AAT::RepeatedAddGlyphAction const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ActionSubrecord>(AAT::ActionSubrecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::PostcompensationActionChain>(AAT::PostcompensationActionChain const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::WidthDeltaPair>(AAT::WidthDeltaPair const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::JustificationCategory>(AAT::JustificationCategory const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::JustificationHeader>(AAT::JustificationHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::JustificationCategory, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::JustificationCategory, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::PostcompensationActionChain, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::PostcompensationActionChain, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::WidthDeltaPair, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::just>(AAT::just const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::JustificationHeader, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::JustificationHeader, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LookupRecord>(OT::LookupRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::ValueBase, true> >(OT::OffsetTo<OT::Device, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::ValueBase, true> const*) const
Line
Count
Source
399
41.0M
  {
400
41.0M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.0M
    else
403
41.0M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.0M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1>(OT::Layout::GPOS_impl::SinglePosFormat1 const*) const
Line
Count
Source
399
19.7k
  {
400
19.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19.7k
    else
403
19.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19.7k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat2>(OT::Layout::GPOS_impl::SinglePosFormat2 const*) const
Line
Count
Source
399
9.71k
  {
400
9.71k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.71k
    else
403
9.71k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.71k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat1>(OT::Layout::GPOS_impl::AnchorFormat1 const*) const
Line
Count
Source
399
1.62M
  {
400
1.62M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.62M
    else
403
1.62M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.62M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat2>(OT::Layout::GPOS_impl::AnchorFormat2 const*) const
Line
Count
Source
399
1.28M
  {
400
1.28M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.28M
    else
403
1.28M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.28M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat3>(OT::Layout::GPOS_impl::AnchorFormat3 const*) const
Line
Count
Source
399
530k
  {
400
530k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
530k
    else
403
530k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
530k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::CursivePosFormat1, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::CursivePosFormat1, true> const*) const
Line
Count
Source
399
7.39M
  {
400
7.39M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.39M
    else
403
7.39M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.39M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix>(OT::Layout::GPOS_impl::AnchorMatrix const*) const
Line
Count
Source
399
236k
  {
400
236k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
236k
    else
403
236k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
236k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix, true> const*) const
Line
Count
Source
399
122M
  {
400
122M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
122M
    else
403
122M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
122M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkRecord>(OT::Layout::GPOS_impl::MarkRecord const*) const
Line
Count
Source
399
9.48M
  {
400
9.48M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.48M
    else
403
9.48M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.48M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
9.48M
  {
400
9.48M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.48M
    else
403
9.48M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.48M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookupSubTable, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
10.1M
  {
400
10.1M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.1M
    else
403
10.1M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.1M
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
16.3k
  {
400
16.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.3k
    else
403
16.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.3k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
351k
  {
400
351k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
351k
    else
403
351k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
351k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairSet<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
269k
  {
400
269k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
269k
    else
403
269k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
269k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
16.2k
  {
400
16.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.2k
    else
403
16.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.2k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
6.95k
  {
400
6.95k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.95k
    else
403
6.95k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.95k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
3.39k
  {
400
3.39k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.39k
    else
403
3.39k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.39k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
1.99k
  {
400
1.99k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.99k
    else
403
1.99k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.99k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairPosFormat2_4<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
6.46k
  {
400
6.46k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.46k
    else
403
6.46k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.46k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
18.2k
  {
400
18.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.2k
    else
403
18.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.2k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
33.8k
  {
400
33.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
33.8k
    else
403
33.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
33.8k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
565k
  {
400
565k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
565k
    else
403
565k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
565k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkBasePosFormat1_2<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
5.30k
  {
400
5.30k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.30k
    else
403
5.30k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.30k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
11.7k
  {
400
11.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.7k
    else
403
11.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.7k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
8.95k
  {
400
8.95k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8.95k
    else
403
8.95k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8.95k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
9.12k
  {
400
9.12k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.12k
    else
403
9.12k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.12k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
9.06k
  {
400
9.06k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.06k
    else
403
9.06k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.06k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkLigPosFormat1_2<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
2.80k
  {
400
2.80k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.80k
    else
403
2.80k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.80k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
2.71k
  {
400
2.71k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.71k
    else
403
2.71k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.71k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
6.63k
  {
400
6.63k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.63k
    else
403
6.63k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.63k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
4.12k
  {
400
4.12k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.12k
    else
403
4.12k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.12k
  }
bool hb_sanitize_context_t::check_struct<OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*) const
Line
Count
Source
399
9.62k
  {
400
9.62k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.62k
    else
403
9.62k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.62k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
21.7k
  {
400
21.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21.7k
    else
403
21.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21.7k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
120k
  {
400
120k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
120k
    else
403
120k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
120k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
541
  {
400
541
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
541
    else
403
541
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
541
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
4.25k
  {
400
4.25k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.25k
    else
403
4.25k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.25k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KernPair>(AAT::KernPair const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentSingle<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSingle<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::StatAxisRecord>(OT::StatAxisRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat1>(OT::AxisValueFormat1 const*) const
Line
Count
Source
399
18.3k
  {
400
18.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.3k
    else
403
18.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.3k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat2>(OT::AxisValueFormat2 const*) const
Line
Count
Source
399
20.7k
  {
400
20.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20.7k
    else
403
20.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20.7k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat3>(OT::AxisValueFormat3 const*) const
Line
Count
Source
399
5.95k
  {
400
5.95k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.95k
    else
403
5.95k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.95k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueRecord>(OT::AxisValueRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat4>(OT::AxisValueFormat4 const*) const
Line
Count
Source
399
3.81k
  {
400
3.81k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.81k
    else
403
3.81k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.81k
  }
bool hb_sanitize_context_t::check_struct<OT::AxisValue>(OT::AxisValue const*) const
Line
Count
Source
399
421k
  {
400
421k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
421k
    else
403
421k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
421k
  }
bool hb_sanitize_context_t::check_struct<OT::STAT>(OT::STAT const*) const
Line
Count
Source
399
5.62k
  {
400
5.62k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.62k
    else
403
5.62k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.62k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
4.76k
  {
400
4.76k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.76k
    else
403
4.76k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.76k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValueOffsetArray, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::AxisValueOffsetArray, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
4.52k
  {
400
4.52k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.52k
    else
403
4.52k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.52k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
528k
  {
400
528k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
528k
    else
403
528k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
528k
  }
bool hb_sanitize_context_t::check_struct<OT::maxp>(OT::maxp const*) const
Line
Count
Source
399
56.5k
  {
400
56.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
56.5k
    else
403
56.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
56.5k
  }
bool hb_sanitize_context_t::check_struct<OT::maxpV1Tail>(OT::maxpV1Tail const*) const
Line
Count
Source
399
32.2k
  {
400
32.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
32.2k
    else
403
32.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
32.2k
  }
bool hb_sanitize_context_t::check_struct<OT::head>(OT::head const*) const
Line
Count
Source
399
35.8k
  {
400
35.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
35.8k
    else
403
35.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
35.8k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VariationValueRecord>(OT::VariationValueRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::MVAR>(OT::MVAR const*) const
Line
Count
Source
399
836
  {
400
836
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
836
    else
403
836
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
836
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ItemVariationStore, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
818
  {
400
818
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
818
    else
403
818
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
818
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V1Tail>(OT::OS2V1Tail const*) const
Line
Count
Source
399
6.03k
  {
400
6.03k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.03k
    else
403
6.03k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.03k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V2Tail>(OT::OS2V2Tail const*) const
Line
Count
Source
399
5.91k
  {
400
5.91k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.91k
    else
403
5.91k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.91k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V5Tail>(OT::OS2V5Tail const*) const
Line
Count
Source
399
448
  {
400
448
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
448
    else
403
448
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
448
  }
bool hb_sanitize_context_t::check_struct<OT::OS2>(OT::OS2 const*) const
Line
Count
Source
399
7.00k
  {
400
7.00k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.00k
    else
403
7.00k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.00k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat0>(OT::CmapSubtableFormat0 const*) const
Line
Count
Source
399
9.00k
  {
400
9.00k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.00k
    else
403
9.00k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.00k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat4>(OT::CmapSubtableFormat4 const*) const
Line
Count
Source
399
64.5k
  {
400
64.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
64.5k
    else
403
64.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
64.5k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::UnicodeValueRange>(OT::UnicodeValueRange const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::UVSMapping>(OT::UVSMapping const*) const
bool hb_sanitize_context_t::check_struct<OT::VariationSelectorRecord>(OT::VariationSelectorRecord const*) const
Line
Count
Source
399
13.9k
  {
400
13.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.9k
    else
403
13.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.9k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::DefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
13.9k
  {
400
13.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.9k
    else
403
13.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.9k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NonDefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::NonDefaultUVS, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
13.8k
  {
400
13.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.8k
    else
403
13.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.8k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14>(OT::CmapSubtableFormat14 const*) const
Line
Count
Source
399
2.70k
  {
400
2.70k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.70k
    else
403
2.70k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.70k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > >(OT::CmapSubtableTrimmed<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
1.45k
  {
400
1.45k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.45k
    else
403
1.45k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.45k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableTrimmed<OT::NumType<true, unsigned int, 4u> > >(OT::CmapSubtableTrimmed<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
689
  {
400
689
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
689
    else
403
689
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
689
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> const*) const
Line
Count
Source
399
10.3k
  {
400
10.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.3k
    else
403
10.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.3k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> const*) const
Line
Count
Source
399
2.31k
  {
400
2.31k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.31k
    else
403
2.31k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.31k
  }
bool hb_sanitize_context_t::check_struct<OT::EncodingRecord>(OT::EncodingRecord const*) const
Line
Count
Source
399
107k
  {
400
107k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
107k
    else
403
107k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
107k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CmapSubtable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::CmapSubtable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
107k
  {
400
107k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
107k
    else
403
107k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
107k
  }
bool hb_sanitize_context_t::check_struct<OT::cmap>(OT::cmap const*) const
Line
Count
Source
399
52.6k
  {
400
52.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
52.6k
    else
403
52.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
52.6k
  }
bool hb_sanitize_context_t::check_struct<OT::CPALV1Tail>(OT::CPALV1Tail const*) const
Line
Count
Source
399
2.42k
  {
400
2.42k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.42k
    else
403
2.42k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.42k
  }
bool hb_sanitize_context_t::check_struct<OT::CPAL>(OT::CPAL const*) const
Line
Count
Source
399
3.70k
  {
400
3.70k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.70k
    else
403
3.70k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.70k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LayerRecord>(OT::LayerRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ColorStop>(OT::ColorStop const*) const
bool hb_sanitize_context_t::check_struct<OT::Affine2x3>(OT::Affine2x3 const*) const
Line
Count
Source
399
34.0k
  {
400
34.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
34.0k
    else
403
34.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
34.0k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintColrLayers>(OT::PaintColrLayers const*) const
Line
Count
Source
399
166k
  {
400
166k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
166k
    else
403
166k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
166k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSolid>(OT::PaintSolid const*) const
Line
Count
Source
399
637k
  {
400
637k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
637k
    else
403
637k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
637k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintGlyph>(OT::PaintGlyph const*) const
Line
Count
Source
399
1.35M
  {
400
1.35M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.35M
    else
403
1.35M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.35M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
3.95M
  {
400
3.95M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.95M
    else
403
3.95M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.95M
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSolid> >(OT::NoVariable<OT::PaintSolid> const*) const
Line
Count
Source
399
607k
  {
400
607k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
607k
    else
403
607k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
607k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSolid> >(OT::Variable<OT::PaintSolid> const*) const
Line
Count
Source
399
29.8k
  {
400
29.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
29.8k
    else
403
29.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
29.8k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > const*) const
Line
Count
Source
399
114k
  {
400
114k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
114k
    else
403
114k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
114k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::NoVariable> >(OT::PaintLinearGradient<OT::NoVariable> const*) const
Line
Count
Source
399
114k
  {
400
114k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
114k
    else
403
114k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
114k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ColorLine<OT::NoVariable>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
302k
  {
400
302k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
302k
    else
403
302k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
302k
  }
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::NoVariable> >(OT::ColorLine<OT::NoVariable> const*) const
Line
Count
Source
399
293k
  {
400
293k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
293k
    else
403
293k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
293k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*) const
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintLinearGradient<OT::Variable> > >(OT::Variable<OT::PaintLinearGradient<OT::Variable> > const*) const
Line
Count
Source
399
46.0k
  {
400
46.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
46.0k
    else
403
46.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
46.0k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::Variable> >(OT::PaintLinearGradient<OT::Variable> const*) const
Line
Count
Source
399
46.0k
  {
400
46.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
46.0k
    else
403
46.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
46.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ColorLine<OT::Variable>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
409k
  {
400
409k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
409k
    else
403
409k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
409k
  }
bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::Variable> >(OT::ColorLine<OT::Variable> const*) const
Line
Count
Source
399
405k
  {
400
405k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
405k
    else
403
405k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
405k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*) const
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > const*) const
Line
Count
Source
399
29.9k
  {
400
29.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
29.9k
    else
403
29.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
29.9k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::NoVariable> >(OT::PaintRadialGradient<OT::NoVariable> const*) const
Line
Count
Source
399
29.9k
  {
400
29.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
29.9k
    else
403
29.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
29.9k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRadialGradient<OT::Variable> > >(OT::Variable<OT::PaintRadialGradient<OT::Variable> > const*) const
Line
Count
Source
399
40.5k
  {
400
40.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.5k
    else
403
40.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.5k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::Variable> >(OT::PaintRadialGradient<OT::Variable> const*) const
Line
Count
Source
399
40.5k
  {
400
40.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.5k
    else
403
40.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.5k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > const*) const
Line
Count
Source
399
158k
  {
400
158k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
158k
    else
403
158k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
158k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::NoVariable> >(OT::PaintSweepGradient<OT::NoVariable> const*) const
Line
Count
Source
399
158k
  {
400
158k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
158k
    else
403
158k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
158k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSweepGradient<OT::Variable> > >(OT::Variable<OT::PaintSweepGradient<OT::Variable> > const*) const
Line
Count
Source
399
322k
  {
400
322k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
322k
    else
403
322k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
322k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::Variable> >(OT::PaintSweepGradient<OT::Variable> const*) const
Line
Count
Source
399
322k
  {
400
322k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
322k
    else
403
322k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
322k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::NoVariable> >(OT::PaintTransform<OT::NoVariable> const*) const
Line
Count
Source
399
15.3k
  {
400
15.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.3k
    else
403
15.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.3k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::NoVariable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
14.8k
  {
400
14.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.8k
    else
403
14.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.8k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::Affine2x3> >(OT::NoVariable<OT::Affine2x3> const*) const
Line
Count
Source
399
7.40k
  {
400
7.40k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.40k
    else
403
7.40k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.40k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::Variable> >(OT::PaintTransform<OT::Variable> const*) const
Line
Count
Source
399
30.4k
  {
400
30.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30.4k
    else
403
30.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30.4k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Variable<OT::Affine2x3>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
29.7k
  {
400
29.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
29.7k
    else
403
29.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
29.7k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::Affine2x3> >(OT::Variable<OT::Affine2x3> const*) const
Line
Count
Source
399
26.7k
  {
400
26.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
26.7k
    else
403
26.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
26.7k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintTranslate> >(OT::NoVariable<OT::PaintTranslate> const*) const
Line
Count
Source
399
101k
  {
400
101k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
101k
    else
403
101k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
101k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintTranslate> >(OT::Variable<OT::PaintTranslate> const*) const
Line
Count
Source
399
71.4k
  {
400
71.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
71.4k
    else
403
71.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
71.4k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScale> >(OT::NoVariable<OT::PaintScale> const*) const
Line
Count
Source
399
58.0k
  {
400
58.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
58.0k
    else
403
58.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
58.0k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScale> >(OT::Variable<OT::PaintScale> const*) const
Line
Count
Source
399
36.2k
  {
400
36.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
36.2k
    else
403
36.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
36.2k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleAroundCenter> >(OT::NoVariable<OT::PaintScaleAroundCenter> const*) const
Line
Count
Source
399
41.9k
  {
400
41.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.9k
    else
403
41.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.9k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleAroundCenter> >(OT::Variable<OT::PaintScaleAroundCenter> const*) const
Line
Count
Source
399
111k
  {
400
111k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
111k
    else
403
111k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
111k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniform> >(OT::NoVariable<OT::PaintScaleUniform> const*) const
Line
Count
Source
399
51.8k
  {
400
51.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
51.8k
    else
403
51.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
51.8k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniform> >(OT::Variable<OT::PaintScaleUniform> const*) const
Line
Count
Source
399
113k
  {
400
113k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
113k
    else
403
113k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
113k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniformAroundCenter> >(OT::NoVariable<OT::PaintScaleUniformAroundCenter> const*) const
Line
Count
Source
399
271k
  {
400
271k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
271k
    else
403
271k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
271k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniformAroundCenter> >(OT::Variable<OT::PaintScaleUniformAroundCenter> const*) const
Line
Count
Source
399
20.0k
  {
400
20.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20.0k
    else
403
20.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20.0k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotate> >(OT::NoVariable<OT::PaintRotate> const*) const
Line
Count
Source
399
47.7k
  {
400
47.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
47.7k
    else
403
47.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
47.7k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotate> >(OT::Variable<OT::PaintRotate> const*) const
Line
Count
Source
399
70.4k
  {
400
70.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
70.4k
    else
403
70.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
70.4k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotateAroundCenter> >(OT::NoVariable<OT::PaintRotateAroundCenter> const*) const
Line
Count
Source
399
109k
  {
400
109k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
109k
    else
403
109k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
109k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotateAroundCenter> >(OT::Variable<OT::PaintRotateAroundCenter> const*) const
Line
Count
Source
399
21.8k
  {
400
21.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21.8k
    else
403
21.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21.8k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkew> >(OT::NoVariable<OT::PaintSkew> const*) const
Line
Count
Source
399
53.3k
  {
400
53.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
53.3k
    else
403
53.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
53.3k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkew> >(OT::Variable<OT::PaintSkew> const*) const
Line
Count
Source
399
40.8k
  {
400
40.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40.8k
    else
403
40.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40.8k
  }
bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkewAroundCenter> >(OT::NoVariable<OT::PaintSkewAroundCenter> const*) const
Line
Count
Source
399
10.9k
  {
400
10.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.9k
    else
403
10.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.9k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkewAroundCenter> >(OT::Variable<OT::PaintSkewAroundCenter> const*) const
Line
Count
Source
399
73.7k
  {
400
73.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
73.7k
    else
403
73.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
73.7k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintColrGlyph>(OT::PaintColrGlyph const*) const
Line
Count
Source
399
64.7k
  {
400
64.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
64.7k
    else
403
64.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
64.7k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintTranslate>(OT::PaintTranslate const*) const
Line
Count
Source
399
173k
  {
400
173k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
173k
    else
403
173k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
173k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScale>(OT::PaintScale const*) const
Line
Count
Source
399
94.2k
  {
400
94.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
94.2k
    else
403
94.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
94.2k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleAroundCenter>(OT::PaintScaleAroundCenter const*) const
Line
Count
Source
399
153k
  {
400
153k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
153k
    else
403
153k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
153k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniform>(OT::PaintScaleUniform const*) const
Line
Count
Source
399
165k
  {
400
165k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
165k
    else
403
165k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
165k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniformAroundCenter>(OT::PaintScaleUniformAroundCenter const*) const
Line
Count
Source
399
291k
  {
400
291k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
291k
    else
403
291k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
291k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRotate>(OT::PaintRotate const*) const
Line
Count
Source
399
118k
  {
400
118k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
118k
    else
403
118k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
118k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintRotateAroundCenter>(OT::PaintRotateAroundCenter const*) const
Line
Count
Source
399
131k
  {
400
131k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
131k
    else
403
131k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
131k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSkew>(OT::PaintSkew const*) const
Line
Count
Source
399
94.1k
  {
400
94.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
94.1k
    else
403
94.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
94.1k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintSkewAroundCenter>(OT::PaintSkewAroundCenter const*) const
Line
Count
Source
399
84.6k
  {
400
84.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
84.6k
    else
403
84.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
84.6k
  }
bool hb_sanitize_context_t::check_struct<OT::PaintComposite>(OT::PaintComposite const*) const
Line
Count
Source
399
621k
  {
400
621k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
621k
    else
403
621k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
621k
  }
bool hb_sanitize_context_t::check_struct<OT::ClipBoxFormat1>(OT::ClipBoxFormat1 const*) const
Line
Count
Source
399
48.6k
  {
400
48.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
48.6k
    else
403
48.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
48.6k
  }
bool hb_sanitize_context_t::check_struct<OT::ClipRecord>(OT::ClipRecord const*) const
Line
Count
Source
399
106k
  {
400
106k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
106k
    else
403
106k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
106k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
106k
  {
400
106k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
106k
    else
403
106k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
106k
  }
bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ClipBoxFormat1> >(OT::Variable<OT::ClipBoxFormat1> const*) const
Line
Count
Source
399
17.4k
  {
400
17.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
17.4k
    else
403
17.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
17.4k
  }
bool hb_sanitize_context_t::check_struct<OT::ClipList>(OT::ClipList const*) const
Line
Count
Source
399
6.76k
  {
400
6.76k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.76k
    else
403
6.76k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.76k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*) const
Line
Count
Source
399
963k
  {
400
963k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
963k
    else
403
963k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
963k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Paint, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
1.31M
  {
400
1.31M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.31M
    else
403
1.31M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.31M
  }
bool hb_sanitize_context_t::check_struct<OT::COLR>(OT::COLR const*) const
Line
Count
Source
399
20.0k
  {
400
20.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20.0k
    else
403
20.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseGlyphList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::BaseGlyphList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
13.4k
  {
400
13.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.4k
    else
403
13.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.4k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LayerList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::LayerList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
12.0k
  {
400
12.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
12.0k
    else
403
12.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
12.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClipList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ClipList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
11.5k
  {
400
11.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.5k
    else
403
11.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.5k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::DeltaSetIndexMap, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::DeltaSetIndexMap, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
31.4k
  {
400
31.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31.4k
    else
403
31.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31.4k
  }
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::hhea> >(OT::_hea<OT::hhea> const*) const
Line
Count
Source
399
31.4k
  {
400
31.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31.4k
    else
403
31.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31.4k
  }
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::vhea> >(OT::_hea<OT::vhea> const*) const
Line
Count
Source
399
2.06k
  {
400
2.06k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.06k
    else
403
2.06k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.06k
  }
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const*) const
Line
Count
Source
399
9.72k
  {
400
9.72k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.72k
    else
403
9.72k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.72k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, short, 2u>, 14u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
9.68k
  {
400
9.68k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.68k
    else
403
9.68k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.68k
  }
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> const*) const
Line
Count
Source
399
2.87k
  {
400
2.87k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.87k
    else
403
2.87k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.87k
  }
bool hb_sanitize_context_t::check_struct<OT::OpenTypeOffsetTable>(OT::OpenTypeOffsetTable const*) const
Line
Count
Source
399
96.8k
  {
400
96.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
96.8k
    else
403
96.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
96.8k
  }
bool hb_sanitize_context_t::check_struct<OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > >(OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
97.4k
  {
400
97.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
97.4k
    else
403
97.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
97.4k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::OpenTypeOffsetTable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
21.4k
  {
400
21.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
21.4k
    else
403
21.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
21.4k
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceForkHeader>(OT::ResourceForkHeader const*) const
Line
Count
Source
399
741
  {
400
741
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
741
    else
403
741
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
741
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ResourceMap, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::ResourceMap, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
610
  {
400
610
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
610
    else
403
610
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
610
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceMap>(OT::ResourceMap const*) const
Line
Count
Source
399
610
  {
400
610
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
610
    else
403
610
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
610
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOfM1<OT::ResourceTypeRecord, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
541
  {
400
541
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
541
    else
403
541
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
541
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*) const
Line
Count
Source
399
476k
  {
400
476k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
476k
    else
403
476k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
476k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::ResourceRecord>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
476k
  {
400
476k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
476k
    else
403
476k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
476k
  }
bool hb_sanitize_context_t::check_struct<OT::ResourceRecord>(OT::ResourceRecord const*) const
Line
Count
Source
399
2.66k
  {
400
2.66k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.66k
    else
403
2.66k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.66k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<OT::NumType<true, unsigned char, 1u>, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 3u>, void, false> >(OT::OffsetTo<OT::ArrayOf<OT::NumType<true, unsigned char, 1u>, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 3u>, void, false> const*) const
Line
Count
Source
399
2.66k
  {
400
2.66k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.66k
    else
403
2.66k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.66k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::TableRecord>(OT::TableRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::fvar>(OT::fvar const*) const
Line
Count
Source
399
15.6k
  {
400
15.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.6k
    else
403
15.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.6k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueMap>(OT::AxisValueMap const*) const
bool hb_sanitize_context_t::check_struct<OT::avar>(OT::avar const*) const
Line
Count
Source
399
3.96k
  {
400
3.96k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.96k
    else
403
3.96k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.96k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::InstanceRecord>(OT::InstanceRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisRecord>(OT::AxisRecord const*) const
bool hb_sanitize_context_t::check_struct<OT::SVG>(OT::SVG const*) const
Line
Count
Source
399
1.14k
  {
400
1.14k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.14k
    else
403
1.14k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.14k
  }
bool hb_sanitize_context_t::check_struct<OT::CBLC>(OT::CBLC const*) const
Line
Count
Source
399
600
  {
400
600
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
600
    else
403
600
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
600
  }
bool hb_sanitize_context_t::check_struct<OT::BitmapSizeTable>(OT::BitmapSizeTable const*) const
Line
Count
Source
399
1.06k
  {
400
1.06k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.06k
    else
403
1.06k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.06k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtableArray, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::IndexSubtableArray, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Line
Count
Source
399
1.06k
  {
400
1.06k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.06k
    else
403
1.06k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.06k
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*) const
Line
Count
Source
399
1.97k
  {
400
1.97k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.97k
    else
403
1.97k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.97k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexSubtable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::IndexSubtable, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
1.96k
  {
400
1.96k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.96k
    else
403
1.96k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.96k
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableHeader>(OT::IndexSubtableHeader const*) const
Line
Count
Source
399
1.07k
  {
400
1.07k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.07k
    else
403
1.07k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.07k
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned int, 4u> > >(OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned int, 4u> > const*) const
Line
Count
Source
399
353
  {
400
353
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
353
    else
403
353
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
353
  }
bool hb_sanitize_context_t::check_struct<OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned short, 2u> > >(OT::IndexSubtableFormat1Or3<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
308
  {
400
308
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
308
    else
403
308
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
308
  }
bool hb_sanitize_context_t::check_struct<OT::SBitLineMetrics>(OT::SBitLineMetrics const*) const
Line
Count
Source
399
1.84k
  {
400
1.84k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.84k
    else
403
1.84k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.84k
  }
bool hb_sanitize_context_t::check_struct<OT::CBDT>(OT::CBDT const*) const
Line
Count
Source
399
435
  {
400
435
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
435
    else
403
435
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
435
  }
bool hb_sanitize_context_t::check_struct<OT::sbix>(OT::sbix const*) const
Line
Count
Source
399
733
  {
400
733
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
733
    else
403
733
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
733
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SBIXStrike, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
2.64k
  {
400
2.64k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.64k
    else
403
2.64k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.64k
  }
bool hb_sanitize_context_t::check_struct<OT::SBIXStrike>(OT::SBIXStrike const*) const
Line
Count
Source
399
1.85k
  {
400
1.85k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.85k
    else
403
1.85k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.85k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SmallGlyphMetrics>(OT::SmallGlyphMetrics const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*) const
bool hb_sanitize_context_t::check_struct<CFF::FDSelect0>(CFF::FDSelect0 const*) const
Line
Count
Source
399
786
  {
400
786
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
786
    else
403
786
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
786
  }
bool hb_sanitize_context_t::check_struct<CFF::FDSelect>(CFF::FDSelect const*) const
Line
Count
Source
399
1.76k
  {
400
1.76k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.76k
    else
403
1.76k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.76k
  }
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*) const
Line
Count
Source
399
1.31k
  {
400
1.31k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.31k
    else
403
1.31k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.31k
  }
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned short, 2u>, OT::NumType<true, unsigned char, 1u> > const*) const
Line
Count
Source
399
36.8k
  {
400
36.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
36.8k
    else
403
36.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
36.8k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::Encoding1_Range>(CFF::Encoding1_Range const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::SuppEncoding>(CFF::SuppEncoding const*) const
bool hb_sanitize_context_t::check_struct<CFF::Encoding>(CFF::Encoding const*) const
Line
Count
Source
399
1.31k
  {
400
1.31k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.31k
    else
403
1.31k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.31k
  }
bool hb_sanitize_context_t::check_struct<CFF::Charset>(CFF::Charset const*) const
Line
Count
Source
399
6.33k
  {
400
6.33k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.33k
    else
403
6.33k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.33k
  }
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::NumType<true, unsigned char, 1u> > >(CFF::Charset_Range<OT::NumType<true, unsigned char, 1u> > const*) const
Line
Count
Source
399
22.6k
  {
400
22.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
22.6k
    else
403
22.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
22.6k
  }
bool hb_sanitize_context_t::check_struct<CFF::Charset_Range<OT::NumType<true, unsigned short, 2u> > >(CFF::Charset_Range<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
23.4k
  {
400
23.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
23.4k
    else
403
23.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
23.4k
  }
bool hb_sanitize_context_t::check_struct<OT::cff1>(OT::cff1 const*) const
Line
Count
Source
399
13.1k
  {
400
13.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13.1k
    else
403
13.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13.1k
  }
bool hb_sanitize_context_t::check_struct<OT::CFFIndex<OT::NumType<true, unsigned short, 2u> > >(OT::CFFIndex<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
69.8k
  {
400
69.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
69.8k
    else
403
69.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
69.8k
  }
bool hb_sanitize_context_t::check_struct<CFF::CFF2FDSelect>(CFF::CFF2FDSelect const*) const
Line
Count
Source
399
592
  {
400
592
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
592
    else
403
592
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
592
  }
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
174
  {
400
174
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
174
    else
403
174
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
174
  }
bool hb_sanitize_context_t::check_struct<CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > >(CFF::FDSelect3_4_Range<OT::NumType<true, unsigned int, 4u>, OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
825
  {
400
825
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
825
    else
403
825
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
825
  }
bool hb_sanitize_context_t::check_struct<CFF::CFF2ItemVariationStore>(CFF::CFF2ItemVariationStore const*) const
Line
Count
Source
399
3.94k
  {
400
3.94k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.94k
    else
403
3.94k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.94k
  }
bool hb_sanitize_context_t::check_struct<OT::cff2>(OT::cff2 const*) const
Line
Count
Source
399
9.94k
  {
400
9.94k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.94k
    else
403
9.94k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.94k
  }
bool hb_sanitize_context_t::check_struct<OT::KernOTSubTableHeader>(OT::KernOTSubTableHeader const*) const
Line
Count
Source
399
4.31k
  {
400
4.31k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.31k
    else
403
4.31k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.31k
  }
bool hb_sanitize_context_t::check_struct<OT::KernAATSubTableHeader>(OT::KernAATSubTableHeader const*) const
Line
Count
Source
399
3.07k
  {
400
3.07k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.07k
    else
403
3.07k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.07k
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
329
  {
400
329
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
329
    else
403
329
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
329
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
285
  {
400
285
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
285
    else
403
285
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
285
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
938
  {
400
938
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
938
    else
403
938
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
938
  }
bool hb_sanitize_context_t::check_struct<AAT::ClassTable<OT::NumType<true, unsigned short, 2u> > >(AAT::ClassTable<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
938
  {
400
938
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
938
    else
403
938
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
938
  }
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernOTSubTableHeader> >(OT::KernSubTableFormat3<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
313
  {
400
313
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
313
    else
403
313
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
313
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> const*) const
Line
Count
Source
399
234
  {
400
234
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
234
    else
403
234
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
234
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> const*) const
Line
Count
Source
399
194
  {
400
194
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
194
    else
403
194
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
194
  }
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernAATSubTableHeader> >(OT::KernSubTableFormat3<OT::KernAATSubTableHeader> const*) const
Line
Count
Source
399
83
  {
400
83
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
83
    else
403
83
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
83
  }
bool hb_sanitize_context_t::check_struct<OT::DataMap>(OT::DataMap const*) const
Line
Count
Source
399
785
  {
400
785
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
785
    else
403
785
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
785
  }
bool hb_sanitize_context_t::check_struct<OT::meta>(OT::meta const*) const
Line
Count
Source
399
43
  {
400
43
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
43
    else
403
43
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
43
  }
bool hb_sanitize_context_t::check_struct<OT::NameRecord>(OT::NameRecord const*) const
Line
Count
Source
399
264k
  {
400
264k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
264k
    else
403
264k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
264k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned char, 1u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Line
Count
Source
399
264k
  {
400
264k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
264k
    else
403
264k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
264k
  }
bool hb_sanitize_context_t::check_struct<OT::name>(OT::name const*) const
Line
Count
Source
399
4.49k
  {
400
4.49k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.49k
    else
403
4.49k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.49k
  }
bool hb_sanitize_context_t::check_struct<OT::post>(OT::post const*) const
Line
Count
Source
399
4.66k
  {
400
4.66k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.66k
    else
403
4.66k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.66k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
5.31k
  {
400
5.31k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.31k
    else
403
5.31k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.31k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
4.62k
  {
400
4.62k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.62k
    else
403
4.62k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.62k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
4.29k
  {
400
4.29k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.29k
    else
403
4.29k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.29k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
4.17k
  {
400
4.17k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.17k
    else
403
4.17k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.17k
  }
bool hb_sanitize_context_t::check_struct<OT::VORG>(OT::VORG const*) const
Line
Count
Source
399
562
  {
400
562
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
562
    else
403
562
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
562
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VertOriginMetric>(OT::VertOriginMetric const*) const
bool hb_sanitize_context_t::check_struct<OT::BASE>(OT::BASE const*) const
Line
Count
Source
399
1.36k
  {
400
1.36k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.36k
    else
403
1.36k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.36k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Axis, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Axis, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.94k
  {
400
1.94k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.94k
    else
403
1.94k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.94k
  }
bool hb_sanitize_context_t::check_struct<OT::Axis>(OT::Axis const*) const
Line
Count
Source
399
1.62k
  {
400
1.62k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.62k
    else
403
1.62k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.62k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::Tag, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::Tag, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.60k
  {
400
1.60k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.60k
    else
403
1.60k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.60k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseScriptList, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseScriptList, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.51k
  {
400
1.51k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.51k
    else
403
1.51k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.51k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScriptList>(OT::BaseScriptList const*) const
Line
Count
Source
399
1.38k
  {
400
1.38k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.38k
    else
403
1.38k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.38k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScriptRecord>(OT::BaseScriptRecord const*) const
Line
Count
Source
399
62.7k
  {
400
62.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
62.7k
    else
403
62.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
62.7k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseScript, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseScript, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
62.7k
  {
400
62.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
62.7k
    else
403
62.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
62.7k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScript>(OT::BaseScript const*) const
Line
Count
Source
399
7.95k
  {
400
7.95k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.95k
    else
403
7.95k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.95k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseValues, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseValues, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
7.89k
  {
400
7.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.89k
    else
403
7.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.89k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseValues>(OT::BaseValues const*) const
Line
Count
Source
399
4.73k
  {
400
4.73k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.73k
    else
403
4.73k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.73k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::BaseCoord, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
109k
  {
400
109k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
109k
    else
403
109k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
109k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat1>(OT::BaseCoordFormat1 const*) const
Line
Count
Source
399
7.75k
  {
400
7.75k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.75k
    else
403
7.75k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.75k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2>(OT::BaseCoordFormat2 const*) const
Line
Count
Source
399
4.27k
  {
400
4.27k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4.27k
    else
403
4.27k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4.27k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat3>(OT::BaseCoordFormat3 const*) const
Line
Count
Source
399
7.46k
  {
400
7.46k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.46k
    else
403
7.46k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.46k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MinMax, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MinMax, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
82.1k
  {
400
82.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
82.1k
    else
403
82.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
82.1k
  }
bool hb_sanitize_context_t::check_struct<OT::MinMax>(OT::MinMax const*) const
Line
Count
Source
399
5.63k
  {
400
5.63k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.63k
    else
403
5.63k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.63k
  }
bool hb_sanitize_context_t::check_struct<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*) const
Line
Count
Source
399
42.4k
  {
400
42.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
42.4k
    else
403
42.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
42.4k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*) const
Line
Count
Source
399
74.4k
  {
400
74.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
74.4k
    else
403
74.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
74.4k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::JstfPriority>(OT::JstfPriority const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::IndexArray, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::IndexArray, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfPriority, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID16, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Record<OT::JstfLangSys> >(OT::Record<OT::JstfLangSys> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Record<OT::JstfScript> >(OT::Record<OT::JstfScript> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfScript, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfScript, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::OpticalBounds>(AAT::OpticalBounds const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat0>(AAT::opbdFormat0 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat1>(AAT::opbdFormat1 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbd>(AAT::opbd const*) const
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathConstants, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathConstants, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.33k
  {
400
1.33k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.33k
    else
403
1.33k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.33k
  }
bool hb_sanitize_context_t::check_struct<OT::MathConstants>(OT::MathConstants const*) const
Line
Count
Source
399
663
  {
400
663
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
663
    else
403
663
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
663
  }
bool hb_sanitize_context_t::check_struct<OT::MathValueRecord>(OT::MathValueRecord const*) const
Line
Count
Source
399
71.8M
  {
400
71.8M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
71.8M
    else
403
71.8M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
71.8M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.23k
  {
400
1.23k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.23k
    else
403
1.23k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.23k
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphInfo>(OT::MathGlyphInfo const*) const
Line
Count
Source
399
1.15k
  {
400
1.15k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.15k
    else
403
1.15k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.15k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathItalicsCorrectionInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.14k
  {
400
1.14k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.14k
    else
403
1.14k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.14k
  }
bool hb_sanitize_context_t::check_struct<OT::MathItalicsCorrectionInfo>(OT::MathItalicsCorrectionInfo const*) const
Line
Count
Source
399
749
  {
400
749
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
749
    else
403
749
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
749
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathTopAccentAttachment, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathTopAccentAttachment, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.09k
  {
400
1.09k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.09k
    else
403
1.09k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.09k
  }
bool hb_sanitize_context_t::check_struct<OT::MathTopAccentAttachment>(OT::MathTopAccentAttachment const*) const
Line
Count
Source
399
881
  {
400
881
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
881
    else
403
881
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
881
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKernInfo, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathKernInfo, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.05k
  {
400
1.05k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.05k
    else
403
1.05k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.05k
  }
bool hb_sanitize_context_t::check_struct<OT::MathKernInfo>(OT::MathKernInfo const*) const
Line
Count
Source
399
676
  {
400
676
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
676
    else
403
676
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
676
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathKern, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathKern, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
2.24M
  {
400
2.24M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.24M
    else
403
2.24M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.24M
  }
bool hb_sanitize_context_t::check_struct<OT::MathKern>(OT::MathKern const*) const
Line
Count
Source
399
30.0k
  {
400
30.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30.0k
    else
403
30.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathVariants, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathVariants, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.01k
  {
400
1.01k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.01k
    else
403
1.01k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.01k
  }
bool hb_sanitize_context_t::check_struct<OT::MathVariants>(OT::MathVariants const*) const
Line
Count
Source
399
929
  {
400
929
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
929
    else
403
929
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
929
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphConstruction, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
713k
  {
400
713k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
713k
    else
403
713k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
713k
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphConstruction>(OT::MathGlyphConstruction const*) const
Line
Count
Source
399
24.3k
  {
400
24.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
24.3k
    else
403
24.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
24.3k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MathGlyphAssembly, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::MathGlyphAssembly, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
24.3k
  {
400
24.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
24.3k
    else
403
24.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
24.3k
  }
bool hb_sanitize_context_t::check_struct<OT::MathGlyphAssembly>(OT::MathGlyphAssembly const*) const
Line
Count
Source
399
16.4k
  {
400
16.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16.4k
    else
403
16.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16.4k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::GaspRange>(OT::GaspRange const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::gasp>(OT::gasp const*) const
bool hb_sanitize_context_t::check_struct<OT::cvar>(OT::cvar const*) const
Line
Count
Source
399
14
  {
400
14
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14
    else
403
14
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14
  }
bool hb_sanitize_context_t::check_struct<OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > >(OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
11
  {
400
11
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11
    else
403
11
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11
  }
bool hb_sanitize_context_t::check_struct<OT::hdmx>(OT::hdmx const*) const
Line
Count
Source
399
99
  {
400
99
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
99
    else
403
99
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
99
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::DeviceRecord>(OT::DeviceRecord const*) const
405
406
  template <typename Type>
407
  hb_blob_t *sanitize_blob (hb_blob_t *blob)
408
3.14M
  {
409
3.14M
    bool sane;
410
411
3.14M
    init (blob);
412
413
3.14M
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
3.14M
    start_processing ();
416
417
3.14M
    if (unlikely (!start))
418
2.53M
    {
419
2.53M
      end_processing ();
420
2.53M
      return blob;
421
2.53M
    }
422
423
614k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
614k
    sane = t->sanitize (this);
426
427
614k
    end_processing ();
428
429
614k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
614k
    if (sane)
431
522k
    {
432
522k
      hb_blob_make_immutable (blob);
433
522k
      return blob;
434
522k
    }
435
91.9k
    else
436
91.9k
    {
437
91.9k
      hb_blob_destroy (blob);
438
91.9k
      return hb_blob_get_empty ();
439
91.9k
    }
440
614k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF>(hb_blob_t*)
Line
Count
Source
408
76.1k
  {
409
76.1k
    bool sane;
410
411
76.1k
    init (blob);
412
413
76.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
76.1k
    start_processing ();
416
417
76.1k
    if (unlikely (!start))
418
63.0k
    {
419
63.0k
      end_processing ();
420
63.0k
      return blob;
421
63.0k
    }
422
423
13.0k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
13.0k
    sane = t->sanitize (this);
426
427
13.0k
    end_processing ();
428
429
13.0k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
13.0k
    if (sane)
431
11.2k
    {
432
11.2k
      hb_blob_make_immutable (blob);
433
11.2k
      return blob;
434
11.2k
    }
435
1.81k
    else
436
1.81k
    {
437
1.81k
      hb_blob_destroy (blob);
438
1.81k
      return hb_blob_get_empty ();
439
1.81k
    }
440
13.0k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB>(hb_blob_t*)
Line
Count
Source
408
98.1k
  {
409
98.1k
    bool sane;
410
411
98.1k
    init (blob);
412
413
98.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
98.1k
    start_processing ();
416
417
98.1k
    if (unlikely (!start))
418
60.5k
    {
419
60.5k
      end_processing ();
420
60.5k
      return blob;
421
60.5k
    }
422
423
37.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
37.5k
    sane = t->sanitize (this);
426
427
37.5k
    end_processing ();
428
429
37.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
37.5k
    if (sane)
431
28.4k
    {
432
28.4k
      hb_blob_make_immutable (blob);
433
28.4k
      return blob;
434
28.4k
    }
435
9.12k
    else
436
9.12k
    {
437
9.12k
      hb_blob_destroy (blob);
438
9.12k
      return hb_blob_get_empty ();
439
9.12k
    }
440
37.5k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::morx>(hb_blob_t*)
Line
Count
Source
408
36.1k
  {
409
36.1k
    bool sane;
410
411
36.1k
    init (blob);
412
413
36.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.1k
    start_processing ();
416
417
36.1k
    if (unlikely (!start))
418
34.3k
    {
419
34.3k
      end_processing ();
420
34.3k
      return blob;
421
34.3k
    }
422
423
1.79k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.79k
    sane = t->sanitize (this);
426
427
1.79k
    end_processing ();
428
429
1.79k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.79k
    if (sane)
431
1.23k
    {
432
1.23k
      hb_blob_make_immutable (blob);
433
1.23k
      return blob;
434
1.23k
    }
435
566
    else
436
566
    {
437
566
      hb_blob_destroy (blob);
438
566
      return hb_blob_get_empty ();
439
566
    }
440
1.79k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ltag>(hb_blob_t*)
Line
Count
Source
408
285
  {
409
285
    bool sane;
410
411
285
    init (blob);
412
413
285
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
285
    start_processing ();
416
417
285
    if (unlikely (!start))
418
176
    {
419
176
      end_processing ();
420
176
      return blob;
421
176
    }
422
423
109
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
109
    sane = t->sanitize (this);
426
427
109
    end_processing ();
428
429
109
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
109
    if (sane)
431
70
    {
432
70
      hb_blob_make_immutable (blob);
433
70
      return blob;
434
70
    }
435
39
    else
436
39
    {
437
39
      hb_blob_destroy (blob);
438
39
      return hb_blob_get_empty ();
439
39
    }
440
109
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::mort>(hb_blob_t*)
Line
Count
Source
408
35.0k
  {
409
35.0k
    bool sane;
410
411
35.0k
    init (blob);
412
413
35.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
35.0k
    start_processing ();
416
417
35.0k
    if (unlikely (!start))
418
33.1k
    {
419
33.1k
      end_processing ();
420
33.1k
      return blob;
421
33.1k
    }
422
423
1.90k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.90k
    sane = t->sanitize (this);
426
427
1.90k
    end_processing ();
428
429
1.90k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.90k
    if (sane)
431
1.56k
    {
432
1.56k
      hb_blob_make_immutable (blob);
433
1.56k
      return blob;
434
1.56k
    }
435
339
    else
436
339
    {
437
339
      hb_blob_destroy (blob);
438
339
      return hb_blob_get_empty ();
439
339
    }
440
1.90k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::kerx>(hb_blob_t*)
Line
Count
Source
408
36.1k
  {
409
36.1k
    bool sane;
410
411
36.1k
    init (blob);
412
413
36.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.1k
    start_processing ();
416
417
36.1k
    if (unlikely (!start))
418
34.0k
    {
419
34.0k
      end_processing ();
420
34.0k
      return blob;
421
34.0k
    }
422
423
2.17k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.17k
    sane = t->sanitize (this);
426
427
2.17k
    end_processing ();
428
429
2.17k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.17k
    if (sane)
431
1.62k
    {
432
1.62k
      hb_blob_make_immutable (blob);
433
1.62k
      return blob;
434
1.62k
    }
435
554
    else
436
554
    {
437
554
      hb_blob_destroy (blob);
438
554
      return hb_blob_get_empty ();
439
554
    }
440
2.17k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ankr>(hb_blob_t*)
Line
Count
Source
408
1.62k
  {
409
1.62k
    bool sane;
410
411
1.62k
    init (blob);
412
413
1.62k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.62k
    start_processing ();
416
417
1.62k
    if (unlikely (!start))
418
1.20k
    {
419
1.20k
      end_processing ();
420
1.20k
      return blob;
421
1.20k
    }
422
423
416
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
416
    sane = t->sanitize (this);
426
427
416
    end_processing ();
428
429
416
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
416
    if (sane)
431
133
    {
432
133
      hb_blob_make_immutable (blob);
433
133
      return blob;
434
133
    }
435
283
    else
436
283
    {
437
283
      hb_blob_destroy (blob);
438
283
      return hb_blob_get_empty ();
439
283
    }
440
416
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::trak>(hb_blob_t*)
Line
Count
Source
408
36.6k
  {
409
36.6k
    bool sane;
410
411
36.6k
    init (blob);
412
413
36.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.6k
    start_processing ();
416
417
36.6k
    if (unlikely (!start))
418
36.4k
    {
419
36.4k
      end_processing ();
420
36.4k
      return blob;
421
36.4k
    }
422
423
178
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
178
    sane = t->sanitize (this);
426
427
178
    end_processing ();
428
429
178
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
178
    if (sane)
431
129
    {
432
129
      hb_blob_make_immutable (blob);
433
129
      return blob;
434
129
    }
435
49
    else
436
49
    {
437
49
      hb_blob_destroy (blob);
438
49
      return hb_blob_get_empty ();
439
49
    }
440
178
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::feat>(hb_blob_t*)
Line
Count
Source
408
36.8k
  {
409
36.8k
    bool sane;
410
411
36.8k
    init (blob);
412
413
36.8k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.8k
    start_processing ();
416
417
36.8k
    if (unlikely (!start))
418
36.7k
    {
419
36.7k
      end_processing ();
420
36.7k
      return blob;
421
36.7k
    }
422
423
42
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
42
    sane = t->sanitize (this);
426
427
42
    end_processing ();
428
429
42
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
42
    if (sane)
431
15
    {
432
15
      hb_blob_make_immutable (blob);
433
15
      return blob;
434
15
    }
435
27
    else
436
27
    {
437
27
      hb_blob_destroy (blob);
438
27
      return hb_blob_get_empty ();
439
27
    }
440
42
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS>(hb_blob_t*)
Line
Count
Source
408
98.0k
  {
409
98.0k
    bool sane;
410
411
98.0k
    init (blob);
412
413
98.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
98.0k
    start_processing ();
416
417
98.0k
    if (unlikely (!start))
418
67.6k
    {
419
67.6k
      end_processing ();
420
67.6k
      return blob;
421
67.6k
    }
422
423
30.4k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
30.4k
    sane = t->sanitize (this);
426
427
30.4k
    end_processing ();
428
429
30.4k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
30.4k
    if (sane)
431
22.9k
    {
432
22.9k
      hb_blob_make_immutable (blob);
433
22.9k
      return blob;
434
22.9k
    }
435
7.51k
    else
436
7.51k
    {
437
7.51k
      hb_blob_destroy (blob);
438
7.51k
      return hb_blob_get_empty ();
439
7.51k
    }
440
30.4k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT>(hb_blob_t*)
Line
Count
Source
408
22.1k
  {
409
22.1k
    bool sane;
410
411
22.1k
    init (blob);
412
413
22.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
22.1k
    start_processing ();
416
417
22.1k
    if (unlikely (!start))
418
17.4k
    {
419
17.4k
      end_processing ();
420
17.4k
      return blob;
421
17.4k
    }
422
423
4.63k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
4.63k
    sane = t->sanitize (this);
426
427
4.63k
    end_processing ();
428
429
4.63k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
4.63k
    if (sane)
431
3.23k
    {
432
3.23k
      hb_blob_make_immutable (blob);
433
3.23k
      return blob;
434
3.23k
    }
435
1.39k
    else
436
1.39k
    {
437
1.39k
      hb_blob_destroy (blob);
438
1.39k
      return hb_blob_get_empty ();
439
1.39k
    }
440
4.63k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::loca>(hb_blob_t*)
Line
Count
Source
408
103k
  {
409
103k
    bool sane;
410
411
103k
    init (blob);
412
413
103k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
103k
    start_processing ();
416
417
103k
    if (unlikely (!start))
418
71.8k
    {
419
71.8k
      end_processing ();
420
71.8k
      return blob;
421
71.8k
    }
422
423
31.2k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
31.2k
    sane = t->sanitize (this);
426
427
31.2k
    end_processing ();
428
429
31.2k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
31.2k
    if (sane)
431
31.2k
    {
432
31.2k
      hb_blob_make_immutable (blob);
433
31.2k
      return blob;
434
31.2k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
31.2k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp>(hb_blob_t*)
Line
Count
Source
408
103k
  {
409
103k
    bool sane;
410
411
103k
    init (blob);
412
413
103k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
103k
    start_processing ();
416
417
103k
    if (unlikely (!start))
418
58.0k
    {
419
58.0k
      end_processing ();
420
58.0k
      return blob;
421
58.0k
    }
422
423
45.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
45.7k
    sane = t->sanitize (this);
426
427
45.7k
    end_processing ();
428
429
45.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
45.7k
    if (sane)
431
38.5k
    {
432
38.5k
      hb_blob_make_immutable (blob);
433
38.5k
      return blob;
434
38.5k
    }
435
7.17k
    else
436
7.17k
    {
437
7.17k
      hb_blob_destroy (blob);
438
7.17k
      return hb_blob_get_empty ();
439
7.17k
    }
440
45.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head>(hb_blob_t*)
Line
Count
Source
408
112k
  {
409
112k
    bool sane;
410
411
112k
    init (blob);
412
413
112k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
112k
    start_processing ();
416
417
112k
    if (unlikely (!start))
418
79.1k
    {
419
79.1k
      end_processing ();
420
79.1k
      return blob;
421
79.1k
    }
422
423
33.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
33.5k
    sane = t->sanitize (this);
426
427
33.5k
    end_processing ();
428
429
33.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
33.5k
    if (sane)
431
21.2k
    {
432
21.2k
      hb_blob_make_immutable (blob);
433
21.2k
      return blob;
434
21.2k
    }
435
12.2k
    else
436
12.2k
    {
437
12.2k
      hb_blob_destroy (blob);
438
12.2k
      return hb_blob_get_empty ();
439
12.2k
    }
440
33.5k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR>(hb_blob_t*)
Line
Count
Source
408
37.4k
  {
409
37.4k
    bool sane;
410
411
37.4k
    init (blob);
412
413
37.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
37.4k
    start_processing ();
416
417
37.4k
    if (unlikely (!start))
418
36.4k
    {
419
36.4k
      end_processing ();
420
36.4k
      return blob;
421
36.4k
    }
422
423
945
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
945
    sane = t->sanitize (this);
426
427
945
    end_processing ();
428
429
945
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
945
    if (sane)
431
405
    {
432
405
      hb_blob_make_immutable (blob);
433
405
      return blob;
434
405
    }
435
540
    else
436
540
    {
437
540
      hb_blob_destroy (blob);
438
540
      return hb_blob_get_empty ();
439
540
    }
440
945
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap>(hb_blob_t*)
Line
Count
Source
408
137k
  {
409
137k
    bool sane;
410
411
137k
    init (blob);
412
413
137k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
137k
    start_processing ();
416
417
137k
    if (unlikely (!start))
418
92.9k
    {
419
92.9k
      end_processing ();
420
92.9k
      return blob;
421
92.9k
    }
422
423
44.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
44.8k
    sane = t->sanitize (this);
426
427
44.8k
    end_processing ();
428
429
44.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
44.8k
    if (sane)
431
38.1k
    {
432
38.1k
      hb_blob_make_immutable (blob);
433
38.1k
      return blob;
434
38.1k
    }
435
6.64k
    else
436
6.64k
    {
437
6.64k
      hb_blob_destroy (blob);
438
6.64k
      return hb_blob_get_empty ();
439
6.64k
    }
440
44.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2>(hb_blob_t*)
Line
Count
Source
408
37.4k
  {
409
37.4k
    bool sane;
410
411
37.4k
    init (blob);
412
413
37.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
37.4k
    start_processing ();
416
417
37.4k
    if (unlikely (!start))
418
35.2k
    {
419
35.2k
      end_processing ();
420
35.2k
      return blob;
421
35.2k
    }
422
423
2.20k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.20k
    sane = t->sanitize (this);
426
427
2.20k
    end_processing ();
428
429
2.20k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.20k
    if (sane)
431
1.90k
    {
432
1.90k
      hb_blob_make_immutable (blob);
433
1.90k
      return blob;
434
1.90k
    }
435
295
    else
436
295
    {
437
295
      hb_blob_destroy (blob);
438
295
      return hb_blob_get_empty ();
439
295
    }
440
2.20k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL>(hb_blob_t*)
Line
Count
Source
408
62.2k
  {
409
62.2k
    bool sane;
410
411
62.2k
    init (blob);
412
413
62.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
62.2k
    start_processing ();
416
417
62.2k
    if (unlikely (!start))
418
59.5k
    {
419
59.5k
      end_processing ();
420
59.5k
      return blob;
421
59.5k
    }
422
423
2.66k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.66k
    sane = t->sanitize (this);
426
427
2.66k
    end_processing ();
428
429
2.66k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.66k
    if (sane)
431
2.12k
    {
432
2.12k
      hb_blob_make_immutable (blob);
433
2.12k
      return blob;
434
2.12k
    }
435
547
    else
436
547
    {
437
547
      hb_blob_destroy (blob);
438
547
      return hb_blob_get_empty ();
439
547
    }
440
2.66k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR>(hb_blob_t*)
Line
Count
Source
408
103k
  {
409
103k
    bool sane;
410
411
103k
    init (blob);
412
413
103k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
103k
    start_processing ();
416
417
103k
    if (unlikely (!start))
418
90.2k
    {
419
90.2k
      end_processing ();
420
90.2k
      return blob;
421
90.2k
    }
422
423
13.4k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
13.4k
    sane = t->sanitize (this);
426
427
13.4k
    end_processing ();
428
429
13.4k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
13.4k
    if (sane)
431
11.1k
    {
432
11.1k
      hb_blob_make_immutable (blob);
433
11.1k
      return blob;
434
11.1k
    }
435
2.28k
    else
436
2.28k
    {
437
2.28k
      hb_blob_destroy (blob);
438
2.28k
      return hb_blob_get_empty ();
439
2.28k
    }
440
13.4k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_blob_t*)
Line
Count
Source
408
89.6k
  {
409
89.6k
    bool sane;
410
411
89.6k
    init (blob);
412
413
89.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
89.6k
    start_processing ();
416
417
89.6k
    if (unlikely (!start))
418
61.2k
    {
419
61.2k
      end_processing ();
420
61.2k
      return blob;
421
61.2k
    }
422
423
28.4k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
28.4k
    sane = t->sanitize (this);
426
427
28.4k
    end_processing ();
428
429
28.4k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
28.4k
    if (sane)
431
28.4k
    {
432
28.4k
      hb_blob_make_immutable (blob);
433
28.4k
      return blob;
434
28.4k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
28.4k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR>(hb_blob_t*)
Line
Count
Source
408
89.6k
  {
409
89.6k
    bool sane;
410
411
89.6k
    init (blob);
412
413
89.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
89.6k
    start_processing ();
416
417
89.6k
    if (unlikely (!start))
418
82.1k
    {
419
82.1k
      end_processing ();
420
82.1k
      return blob;
421
82.1k
    }
422
423
7.46k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
7.46k
    sane = t->sanitize (this);
426
427
7.46k
    end_processing ();
428
429
7.46k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
7.46k
    if (sane)
431
3.95k
    {
432
3.95k
      hb_blob_make_immutable (blob);
433
3.95k
      return blob;
434
3.95k
    }
435
3.50k
    else
436
3.50k
    {
437
3.50k
      hb_blob_destroy (blob);
438
3.50k
      return hb_blob_get_empty ();
439
3.50k
    }
440
7.46k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hhea>(hb_blob_t*)
Line
Count
Source
408
89.5k
  {
409
89.5k
    bool sane;
410
411
89.5k
    init (blob);
412
413
89.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
89.5k
    start_processing ();
416
417
89.5k
    if (unlikely (!start))
418
58.0k
    {
419
58.0k
      end_processing ();
420
58.0k
      return blob;
421
58.0k
    }
422
423
31.4k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
31.4k
    sane = t->sanitize (this);
426
427
31.4k
    end_processing ();
428
429
31.4k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
31.4k
    if (sane)
431
22.4k
    {
432
22.4k
      hb_blob_make_immutable (blob);
433
22.4k
      return blob;
434
22.4k
    }
435
8.96k
    else
436
8.96k
    {
437
8.96k
      hb_blob_destroy (blob);
438
8.96k
      return hb_blob_get_empty ();
439
8.96k
    }
440
31.4k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vhea>(hb_blob_t*)
Line
Count
Source
408
85.5k
  {
409
85.5k
    bool sane;
410
411
85.5k
    init (blob);
412
413
85.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
85.5k
    start_processing ();
416
417
85.5k
    if (unlikely (!start))
418
83.5k
    {
419
83.5k
      end_processing ();
420
83.5k
      return blob;
421
83.5k
    }
422
423
2.06k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.06k
    sane = t->sanitize (this);
426
427
2.06k
    end_processing ();
428
429
2.06k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.06k
    if (sane)
431
1.59k
    {
432
1.59k
      hb_blob_make_immutable (blob);
433
1.59k
      return blob;
434
1.59k
    }
435
463
    else
436
463
    {
437
463
      hb_blob_destroy (blob);
438
463
      return hb_blob_get_empty ();
439
463
    }
440
2.06k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_blob_t*)
Line
Count
Source
408
86.5k
  {
409
86.5k
    bool sane;
410
411
86.5k
    init (blob);
412
413
86.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
86.5k
    start_processing ();
416
417
86.5k
    if (unlikely (!start))
418
83.8k
    {
419
83.8k
      end_processing ();
420
83.8k
      return blob;
421
83.8k
    }
422
423
2.67k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.67k
    sane = t->sanitize (this);
426
427
2.67k
    end_processing ();
428
429
2.67k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.67k
    if (sane)
431
2.67k
    {
432
2.67k
      hb_blob_make_immutable (blob);
433
2.67k
      return blob;
434
2.67k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
2.67k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR>(hb_blob_t*)
Line
Count
Source
408
86.5k
  {
409
86.5k
    bool sane;
410
411
86.5k
    init (blob);
412
413
86.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
86.5k
    start_processing ();
416
417
86.5k
    if (unlikely (!start))
418
85.4k
    {
419
85.4k
      end_processing ();
420
85.4k
      return blob;
421
85.4k
    }
422
423
1.07k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.07k
    sane = t->sanitize (this);
426
427
1.07k
    end_processing ();
428
429
1.07k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.07k
    if (sane)
431
269
    {
432
269
      hb_blob_make_immutable (blob);
433
269
      return blob;
434
269
    }
435
801
    else
436
801
    {
437
801
      hb_blob_destroy (blob);
438
801
      return hb_blob_get_empty ();
439
801
    }
440
1.07k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(hb_blob_t*)
Line
Count
Source
408
84.2k
  {
409
84.2k
    bool sane;
410
411
84.2k
    init (blob);
412
413
84.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
84.2k
    start_processing ();
416
417
84.2k
    if (unlikely (!start))
418
75.9k
    {
419
75.9k
      end_processing ();
420
75.9k
      return blob;
421
75.9k
    }
422
423
8.25k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
8.25k
    sane = t->sanitize (this);
426
427
8.25k
    end_processing ();
428
429
8.25k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
8.25k
    if (sane)
431
5.03k
    {
432
5.03k
      hb_blob_make_immutable (blob);
433
5.03k
      return blob;
434
5.03k
    }
435
3.22k
    else
436
3.22k
    {
437
3.22k
      hb_blob_destroy (blob);
438
3.22k
      return hb_blob_get_empty ();
439
3.22k
    }
440
8.25k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(hb_blob_t*)
Line
Count
Source
408
83.9k
  {
409
83.9k
    bool sane;
410
411
83.9k
    init (blob);
412
413
83.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
83.9k
    start_processing ();
416
417
83.9k
    if (unlikely (!start))
418
81.0k
    {
419
81.0k
      end_processing ();
420
81.0k
      return blob;
421
81.0k
    }
422
423
2.87k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.87k
    sane = t->sanitize (this);
426
427
2.87k
    end_processing ();
428
429
2.87k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.87k
    if (sane)
431
2.31k
    {
432
2.31k
      hb_blob_make_immutable (blob);
433
2.31k
      return blob;
434
2.31k
    }
435
564
    else
436
564
    {
437
564
      hb_blob_destroy (blob);
438
564
      return hb_blob_get_empty ();
439
564
    }
440
2.87k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf>(hb_blob_t*)
Line
Count
Source
408
111k
  {
409
111k
    bool sane;
410
411
111k
    init (blob);
412
413
111k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
111k
    start_processing ();
416
417
111k
    if (unlikely (!start))
418
74.7k
    {
419
74.7k
      end_processing ();
420
74.7k
      return blob;
421
74.7k
    }
422
423
36.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
36.7k
    sane = t->sanitize (this);
426
427
36.7k
    end_processing ();
428
429
36.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
36.7k
    if (sane)
431
36.7k
    {
432
36.7k
      hb_blob_make_immutable (blob);
433
36.7k
      return blob;
434
36.7k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
36.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OpenTypeFontFile>(hb_blob_t*)
Line
Count
Source
408
104k
  {
409
104k
    bool sane;
410
411
104k
    init (blob);
412
413
104k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
104k
    start_processing ();
416
417
104k
    if (unlikely (!start))
418
107
    {
419
107
      end_processing ();
420
107
      return blob;
421
107
    }
422
423
104k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
104k
    sane = t->sanitize (this);
426
427
104k
    end_processing ();
428
429
104k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
104k
    if (sane)
431
102k
    {
432
102k
      hb_blob_make_immutable (blob);
433
102k
      return blob;
434
102k
    }
435
2.27k
    else
436
2.27k
    {
437
2.27k
      hb_blob_destroy (blob);
438
2.27k
      return hb_blob_get_empty ();
439
2.27k
    }
440
104k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar>(hb_blob_t*)
Line
Count
Source
408
103k
  {
409
103k
    bool sane;
410
411
103k
    init (blob);
412
413
103k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
103k
    start_processing ();
416
417
103k
    if (unlikely (!start))
418
84.9k
    {
419
84.9k
      end_processing ();
420
84.9k
      return blob;
421
84.9k
    }
422
423
18.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
18.7k
    sane = t->sanitize (this);
426
427
18.7k
    end_processing ();
428
429
18.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
18.7k
    if (sane)
431
13.9k
    {
432
13.9k
      hb_blob_make_immutable (blob);
433
13.9k
      return blob;
434
13.9k
    }
435
4.77k
    else
436
4.77k
    {
437
4.77k
      hb_blob_destroy (blob);
438
4.77k
      return hb_blob_get_empty ();
439
4.77k
    }
440
18.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::SVG>(hb_blob_t*)
Line
Count
Source
408
64.3k
  {
409
64.3k
    bool sane;
410
411
64.3k
    init (blob);
412
413
64.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
64.3k
    start_processing ();
416
417
64.3k
    if (unlikely (!start))
418
63.1k
    {
419
63.1k
      end_processing ();
420
63.1k
      return blob;
421
63.1k
    }
422
423
1.14k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.14k
    sane = t->sanitize (this);
426
427
1.14k
    end_processing ();
428
429
1.14k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.14k
    if (sane)
431
1.00k
    {
432
1.00k
      hb_blob_make_immutable (blob);
433
1.00k
      return blob;
434
1.00k
    }
435
137
    else
436
137
    {
437
137
      hb_blob_destroy (blob);
438
137
      return hb_blob_get_empty ();
439
137
    }
440
1.14k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC>(hb_blob_t*)
Line
Count
Source
408
64.3k
  {
409
64.3k
    bool sane;
410
411
64.3k
    init (blob);
412
413
64.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
64.3k
    start_processing ();
416
417
64.3k
    if (unlikely (!start))
418
64.0k
    {
419
64.0k
      end_processing ();
420
64.0k
      return blob;
421
64.0k
    }
422
423
354
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
354
    sane = t->sanitize (this);
426
427
354
    end_processing ();
428
429
354
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
354
    if (sane)
431
263
    {
432
263
      hb_blob_make_immutable (blob);
433
263
      return blob;
434
263
    }
435
91
    else
436
91
    {
437
91
      hb_blob_destroy (blob);
438
91
      return hb_blob_get_empty ();
439
91
    }
440
354
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBDT>(hb_blob_t*)
Line
Count
Source
408
64.5k
  {
409
64.5k
    bool sane;
410
411
64.5k
    init (blob);
412
413
64.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
64.5k
    start_processing ();
416
417
64.5k
    if (unlikely (!start))
418
64.1k
    {
419
64.1k
      end_processing ();
420
64.1k
      return blob;
421
64.1k
    }
422
423
435
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
435
    sane = t->sanitize (this);
426
427
435
    end_processing ();
428
429
435
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
435
    if (sane)
431
410
    {
432
410
      hb_blob_make_immutable (blob);
433
410
      return blob;
434
410
    }
435
25
    else
436
25
    {
437
25
      hb_blob_destroy (blob);
438
25
      return hb_blob_get_empty ();
439
25
    }
440
435
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix>(hb_blob_t*)
Line
Count
Source
408
64.3k
  {
409
64.3k
    bool sane;
410
411
64.3k
    init (blob);
412
413
64.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
64.3k
    start_processing ();
416
417
64.3k
    if (unlikely (!start))
418
63.8k
    {
419
63.8k
      end_processing ();
420
63.8k
      return blob;
421
63.8k
    }
422
423
530
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
530
    sane = t->sanitize (this);
426
427
530
    end_processing ();
428
429
530
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
530
    if (sane)
431
368
    {
432
368
      hb_blob_make_immutable (blob);
433
368
      return blob;
434
368
    }
435
162
    else
436
162
    {
437
162
      hb_blob_destroy (blob);
438
162
      return hb_blob_get_empty ();
439
162
    }
440
530
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff1>(hb_blob_t*)
Line
Count
Source
408
98.6k
  {
409
98.6k
    bool sane;
410
411
98.6k
    init (blob);
412
413
98.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
98.6k
    start_processing ();
416
417
98.6k
    if (unlikely (!start))
418
85.5k
    {
419
85.5k
      end_processing ();
420
85.5k
      return blob;
421
85.5k
    }
422
423
13.1k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
13.1k
    sane = t->sanitize (this);
426
427
13.1k
    end_processing ();
428
429
13.1k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
13.1k
    if (sane)
431
12.5k
    {
432
12.5k
      hb_blob_make_immutable (blob);
433
12.5k
      return blob;
434
12.5k
    }
435
588
    else
436
588
    {
437
588
      hb_blob_destroy (blob);
438
588
      return hb_blob_get_empty ();
439
588
    }
440
13.1k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff2>(hb_blob_t*)
Line
Count
Source
408
61.7k
  {
409
61.7k
    bool sane;
410
411
61.7k
    init (blob);
412
413
61.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
61.7k
    start_processing ();
416
417
61.7k
    if (unlikely (!start))
418
51.8k
    {
419
51.8k
      end_processing ();
420
51.8k
      return blob;
421
51.8k
    }
422
423
9.94k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
9.94k
    sane = t->sanitize (this);
426
427
9.94k
    end_processing ();
428
429
9.94k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
9.94k
    if (sane)
431
9.68k
    {
432
9.68k
      hb_blob_make_immutable (blob);
433
9.68k
      return blob;
434
9.68k
    }
435
261
    else
436
261
    {
437
261
      hb_blob_destroy (blob);
438
261
      return hb_blob_get_empty ();
439
261
    }
440
9.94k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::kern>(hb_blob_t*)
Line
Count
Source
408
34.3k
  {
409
34.3k
    bool sane;
410
411
34.3k
    init (blob);
412
413
34.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
34.3k
    start_processing ();
416
417
34.3k
    if (unlikely (!start))
418
32.5k
    {
419
32.5k
      end_processing ();
420
32.5k
      return blob;
421
32.5k
    }
422
423
1.77k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.77k
    sane = t->sanitize (this);
426
427
1.77k
    end_processing ();
428
429
1.77k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.77k
    if (sane)
431
1.54k
    {
432
1.54k
      hb_blob_make_immutable (blob);
433
1.54k
      return blob;
434
1.54k
    }
435
225
    else
436
225
    {
437
225
      hb_blob_destroy (blob);
438
225
      return hb_blob_get_empty ();
439
225
    }
440
1.77k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*)
Line
Count
Source
408
36.4k
  {
409
36.4k
    bool sane;
410
411
36.4k
    init (blob);
412
413
36.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.4k
    start_processing ();
416
417
36.4k
    if (unlikely (!start))
418
36.3k
    {
419
36.3k
      end_processing ();
420
36.3k
      return blob;
421
36.3k
    }
422
423
43
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
43
    sane = t->sanitize (this);
426
427
43
    end_processing ();
428
429
43
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
43
    if (sane)
431
14
    {
432
14
      hb_blob_make_immutable (blob);
433
14
      return blob;
434
14
    }
435
29
    else
436
29
    {
437
29
      hb_blob_destroy (blob);
438
29
      return hb_blob_get_empty ();
439
29
    }
440
43
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*)
Line
Count
Source
408
36.3k
  {
409
36.3k
    bool sane;
410
411
36.3k
    init (blob);
412
413
36.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.3k
    start_processing ();
416
417
36.3k
    if (unlikely (!start))
418
34.5k
    {
419
34.5k
      end_processing ();
420
34.5k
      return blob;
421
34.5k
    }
422
423
1.82k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.82k
    sane = t->sanitize (this);
426
427
1.82k
    end_processing ();
428
429
1.82k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.82k
    if (sane)
431
856
    {
432
856
      hb_blob_make_immutable (blob);
433
856
      return blob;
434
856
    }
435
972
    else
436
972
    {
437
972
      hb_blob_destroy (blob);
438
972
      return hb_blob_get_empty ();
439
972
    }
440
1.82k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post>(hb_blob_t*)
Line
Count
Source
408
36.4k
  {
409
36.4k
    bool sane;
410
411
36.4k
    init (blob);
412
413
36.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.4k
    start_processing ();
416
417
36.4k
    if (unlikely (!start))
418
34.0k
    {
419
34.0k
      end_processing ();
420
34.0k
      return blob;
421
34.0k
    }
422
423
2.37k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.37k
    sane = t->sanitize (this);
426
427
2.37k
    end_processing ();
428
429
2.37k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.37k
    if (sane)
431
1.46k
    {
432
1.46k
      hb_blob_make_immutable (blob);
433
1.46k
      return blob;
434
1.46k
    }
435
908
    else
436
908
    {
437
908
      hb_blob_destroy (blob);
438
908
      return hb_blob_get_empty ();
439
908
    }
440
2.37k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VARC>(hb_blob_t*)
Line
Count
Source
408
64.3k
  {
409
64.3k
    bool sane;
410
411
64.3k
    init (blob);
412
413
64.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
64.3k
    start_processing ();
416
417
64.3k
    if (unlikely (!start))
418
58.5k
    {
419
58.5k
      end_processing ();
420
58.5k
      return blob;
421
58.5k
    }
422
423
5.81k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
5.81k
    sane = t->sanitize (this);
426
427
5.81k
    end_processing ();
428
429
5.81k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
5.81k
    if (sane)
431
4.11k
    {
432
4.11k
      hb_blob_make_immutable (blob);
433
4.11k
      return blob;
434
4.11k
    }
435
1.69k
    else
436
1.69k
    {
437
1.69k
      hb_blob_destroy (blob);
438
1.69k
      return hb_blob_get_empty ();
439
1.69k
    }
440
5.81k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG>(hb_blob_t*)
Line
Count
Source
408
36.7k
  {
409
36.7k
    bool sane;
410
411
36.7k
    init (blob);
412
413
36.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
36.7k
    start_processing ();
416
417
36.7k
    if (unlikely (!start))
418
36.5k
    {
419
36.5k
      end_processing ();
420
36.5k
      return blob;
421
36.5k
    }
422
423
215
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
215
    sane = t->sanitize (this);
426
427
215
    end_processing ();
428
429
215
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
215
    if (sane)
431
161
    {
432
161
      hb_blob_make_immutable (blob);
433
161
      return blob;
434
161
    }
435
54
    else
436
54
    {
437
54
      hb_blob_destroy (blob);
438
54
      return hb_blob_get_empty ();
439
54
    }
440
215
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE>(hb_blob_t*)
Line
Count
Source
408
75.5k
  {
409
75.5k
    bool sane;
410
411
75.5k
    init (blob);
412
413
75.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
75.5k
    start_processing ();
416
417
75.5k
    if (unlikely (!start))
418
74.1k
    {
419
74.1k
      end_processing ();
420
74.1k
      return blob;
421
74.1k
    }
422
423
1.36k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.36k
    sane = t->sanitize (this);
426
427
1.36k
    end_processing ();
428
429
1.36k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.36k
    if (sane)
431
506
    {
432
506
      hb_blob_make_immutable (blob);
433
506
      return blob;
434
506
    }
435
858
    else
436
858
    {
437
858
      hb_blob_destroy (blob);
438
858
      return hb_blob_get_empty ();
439
858
    }
440
1.36k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH>(hb_blob_t*)
Line
Count
Source
408
76.2k
  {
409
76.2k
    bool sane;
410
411
76.2k
    init (blob);
412
413
76.2k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
76.2k
    start_processing ();
416
417
76.2k
    if (unlikely (!start))
418
74.8k
    {
419
74.8k
      end_processing ();
420
74.8k
      return blob;
421
74.8k
    }
422
423
1.41k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.41k
    sane = t->sanitize (this);
426
427
1.41k
    end_processing ();
428
429
1.41k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.41k
    if (sane)
431
858
    {
432
858
      hb_blob_make_immutable (blob);
433
858
      return blob;
434
858
    }
435
558
    else
436
558
    {
437
558
      hb_blob_destroy (blob);
438
558
      return hb_blob_get_empty ();
439
558
    }
440
1.41k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar>(hb_blob_t*)
Line
Count
Source
408
83.6k
  {
409
83.6k
    bool sane;
410
411
83.6k
    init (blob);
412
413
83.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
83.6k
    start_processing ();
416
417
83.6k
    if (unlikely (!start))
418
77.7k
    {
419
77.7k
      end_processing ();
420
77.7k
      return blob;
421
77.7k
    }
422
423
5.92k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
5.92k
    sane = t->sanitize (this);
426
427
5.92k
    end_processing ();
428
429
5.92k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
5.92k
    if (sane)
431
3.15k
    {
432
3.15k
      hb_blob_make_immutable (blob);
433
3.15k
      return blob;
434
3.15k
    }
435
2.77k
    else
436
2.77k
    {
437
2.77k
      hb_blob_destroy (blob);
438
2.77k
      return hb_blob_get_empty ();
439
2.77k
    }
440
5.92k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head const>(hb_blob_t*)
Line
Count
Source
408
2.41k
  {
409
2.41k
    bool sane;
410
411
2.41k
    init (blob);
412
413
2.41k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.41k
    start_processing ();
416
417
2.41k
    if (unlikely (!start))
418
129
    {
419
129
      end_processing ();
420
129
      return blob;
421
129
    }
422
423
2.28k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.28k
    sane = t->sanitize (this);
426
427
2.28k
    end_processing ();
428
429
2.28k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.28k
    if (sane)
431
1.15k
    {
432
1.15k
      hb_blob_make_immutable (blob);
433
1.15k
      return blob;
434
1.15k
    }
435
1.13k
    else
436
1.13k
    {
437
1.13k
      hb_blob_destroy (blob);
438
1.13k
      return hb_blob_get_empty ();
439
1.13k
    }
440
2.28k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT const>(hb_blob_t*)
Line
Count
Source
408
1.00k
  {
409
1.00k
    bool sane;
410
411
1.00k
    init (blob);
412
413
1.00k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.00k
    start_processing ();
416
417
1.00k
    if (unlikely (!start))
418
12
    {
419
12
      end_processing ();
420
12
      return blob;
421
12
    }
422
423
995
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
995
    sane = t->sanitize (this);
426
427
995
    end_processing ();
428
429
995
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
995
    if (sane)
431
943
    {
432
943
      hb_blob_make_immutable (blob);
433
943
      return blob;
434
943
    }
435
52
    else
436
52
    {
437
52
      hb_blob_destroy (blob);
438
52
      return hb_blob_get_empty ();
439
52
    }
440
995
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF const>(hb_blob_t*)
Line
Count
Source
408
13
  {
409
13
    bool sane;
410
411
13
    init (blob);
412
413
13
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
13
    start_processing ();
416
417
13
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
13
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
13
    sane = t->sanitize (this);
426
427
13
    end_processing ();
428
429
13
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
13
    if (sane)
431
8
    {
432
8
      hb_blob_make_immutable (blob);
433
8
      return blob;
434
8
    }
435
5
    else
436
5
    {
437
5
      hb_blob_destroy (blob);
438
5
      return hb_blob_get_empty ();
439
5
    }
440
13
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB const>(hb_blob_t*)
Line
Count
Source
408
4
  {
409
4
    bool sane;
410
411
4
    init (blob);
412
413
4
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
4
    start_processing ();
416
417
4
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
3
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
3
    sane = t->sanitize (this);
426
427
3
    end_processing ();
428
429
3
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
3
    if (sane)
431
1
    {
432
1
      hb_blob_make_immutable (blob);
433
1
      return blob;
434
1
    }
435
2
    else
436
2
    {
437
2
      hb_blob_destroy (blob);
438
2
      return hb_blob_get_empty ();
439
2
    }
440
3
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS const>(hb_blob_t*)
Line
Count
Source
408
9
  {
409
9
    bool sane;
410
411
9
    init (blob);
412
413
9
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9
    start_processing ();
416
417
9
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
8
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
8
    sane = t->sanitize (this);
426
427
8
    end_processing ();
428
429
8
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
8
    if (sane)
431
5
    {
432
5
      hb_blob_make_immutable (blob);
433
5
      return blob;
434
5
    }
435
3
    else
436
3
    {
437
3
      hb_blob_destroy (blob);
438
3
      return hb_blob_get_empty ();
439
3
    }
440
8
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH const>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR const>(hb_blob_t*)
Line
Count
Source
408
3.38k
  {
409
3.38k
    bool sane;
410
411
3.38k
    init (blob);
412
413
3.38k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
3.38k
    start_processing ();
416
417
3.38k
    if (unlikely (!start))
418
980
    {
419
980
      end_processing ();
420
980
      return blob;
421
980
    }
422
423
2.40k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.40k
    sane = t->sanitize (this);
426
427
2.40k
    end_processing ();
428
429
2.40k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.40k
    if (sane)
431
1.35k
    {
432
1.35k
      hb_blob_make_immutable (blob);
433
1.35k
      return blob;
434
1.35k
    }
435
1.05k
    else
436
1.05k
    {
437
1.05k
      hb_blob_destroy (blob);
438
1.05k
      return hb_blob_get_empty ();
439
1.05k
    }
440
2.40k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR const>(hb_blob_t*)
Line
Count
Source
408
142
  {
409
142
    bool sane;
410
411
142
    init (blob);
412
413
142
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
142
    start_processing ();
416
417
142
    if (unlikely (!start))
418
9
    {
419
9
      end_processing ();
420
9
      return blob;
421
9
    }
422
423
133
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
133
    sane = t->sanitize (this);
426
427
133
    end_processing ();
428
429
133
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
133
    if (sane)
431
44
    {
432
44
      hb_blob_make_immutable (blob);
433
44
      return blob;
434
44
    }
435
89
    else
436
89
    {
437
89
      hb_blob_destroy (blob);
438
89
      return hb_blob_get_empty ();
439
89
    }
440
133
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const>(hb_blob_t*)
Line
Count
Source
408
1.53k
  {
409
1.53k
    bool sane;
410
411
1.53k
    init (blob);
412
413
1.53k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.53k
    start_processing ();
416
417
1.53k
    if (unlikely (!start))
418
66
    {
419
66
      end_processing ();
420
66
      return blob;
421
66
    }
422
423
1.46k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.46k
    sane = t->sanitize (this);
426
427
1.46k
    end_processing ();
428
429
1.46k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.46k
    if (sane)
431
998
    {
432
998
      hb_blob_make_immutable (blob);
433
998
      return blob;
434
998
    }
435
470
    else
436
470
    {
437
470
      hb_blob_destroy (blob);
438
470
      return hb_blob_get_empty ();
439
470
    }
440
1.46k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar const>(hb_blob_t*)
Line
Count
Source
408
1.00k
  {
409
1.00k
    bool sane;
410
411
1.00k
    init (blob);
412
413
1.00k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.00k
    start_processing ();
416
417
1.00k
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
1.00k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.00k
    sane = t->sanitize (this);
426
427
1.00k
    end_processing ();
428
429
1.00k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.00k
    if (sane)
431
1.00k
    {
432
1.00k
      hb_blob_make_immutable (blob);
433
1.00k
      return blob;
434
1.00k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
1.00k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar const>(hb_blob_t*)
Line
Count
Source
408
178
  {
409
178
    bool sane;
410
411
178
    init (blob);
412
413
178
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
178
    start_processing ();
416
417
178
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
177
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
177
    sane = t->sanitize (this);
426
427
177
    end_processing ();
428
429
177
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
177
    if (sane)
431
157
    {
432
157
      hb_blob_make_immutable (blob);
433
157
      return blob;
434
157
    }
435
20
    else
436
20
    {
437
20
      hb_blob_destroy (blob);
438
20
      return hb_blob_get_empty ();
439
20
    }
440
177
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar const>(hb_blob_t*)
Line
Count
Source
408
16
  {
409
16
    bool sane;
410
411
16
    init (blob);
412
413
16
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
16
    start_processing ();
416
417
16
    if (unlikely (!start))
418
2
    {
419
2
      end_processing ();
420
2
      return blob;
421
2
    }
422
423
14
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
14
    sane = t->sanitize (this);
426
427
14
    end_processing ();
428
429
14
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
14
    if (sane)
431
11
    {
432
11
      hb_blob_make_immutable (blob);
433
11
      return blob;
434
11
    }
435
3
    else
436
3
    {
437
3
      hb_blob_destroy (blob);
438
3
      return hb_blob_get_empty ();
439
3
    }
440
14
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR const>(hb_blob_t*)
Line
Count
Source
408
220
  {
409
220
    bool sane;
410
411
220
    init (blob);
412
413
220
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
220
    start_processing ();
416
417
220
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
219
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
219
    sane = t->sanitize (this);
426
427
219
    end_processing ();
428
429
219
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
219
    if (sane)
431
191
    {
432
191
      hb_blob_make_immutable (blob);
433
191
      return blob;
434
191
    }
435
28
    else
436
28
    {
437
28
      hb_blob_destroy (blob);
438
28
      return hb_blob_get_empty ();
439
28
    }
440
219
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG const>(hb_blob_t*)
Line
Count
Source
408
352
  {
409
352
    bool sane;
410
411
352
    init (blob);
412
413
352
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
352
    start_processing ();
416
417
352
    if (unlikely (!start))
418
5
    {
419
5
      end_processing ();
420
5
      return blob;
421
5
    }
422
423
347
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
347
    sane = t->sanitize (this);
426
427
347
    end_processing ();
428
429
347
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
347
    if (sane)
431
324
    {
432
324
      hb_blob_make_immutable (blob);
433
324
      return blob;
434
324
    }
435
23
    else
436
23
    {
437
23
      hb_blob_destroy (blob);
438
23
      return hb_blob_get_empty ();
439
23
    }
440
347
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix const>(hb_blob_t*)
Line
Count
Source
408
214
  {
409
214
    bool sane;
410
411
214
    init (blob);
412
413
214
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
214
    start_processing ();
416
417
214
    if (unlikely (!start))
418
11
    {
419
11
      end_processing ();
420
11
      return blob;
421
11
    }
422
423
203
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
203
    sane = t->sanitize (this);
426
427
203
    end_processing ();
428
429
203
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
203
    if (sane)
431
152
    {
432
152
      hb_blob_make_immutable (blob);
433
152
      return blob;
434
152
    }
435
51
    else
436
51
    {
437
51
      hb_blob_destroy (blob);
438
51
      return hb_blob_get_empty ();
439
51
    }
440
203
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR const>(hb_blob_t*)
Line
Count
Source
408
6.64k
  {
409
6.64k
    bool sane;
410
411
6.64k
    init (blob);
412
413
6.64k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
6.64k
    start_processing ();
416
417
6.64k
    if (unlikely (!start))
418
51
    {
419
51
      end_processing ();
420
51
      return blob;
421
51
    }
422
423
6.59k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
6.59k
    sane = t->sanitize (this);
426
427
6.59k
    end_processing ();
428
429
6.59k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
6.59k
    if (sane)
431
5.78k
    {
432
5.78k
      hb_blob_make_immutable (blob);
433
5.78k
      return blob;
434
5.78k
    }
435
807
    else
436
807
    {
437
807
      hb_blob_destroy (blob);
438
807
      return hb_blob_get_empty ();
439
807
    }
440
6.59k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL const>(hb_blob_t*)
Line
Count
Source
408
1.07k
  {
409
1.07k
    bool sane;
410
411
1.07k
    init (blob);
412
413
1.07k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1.07k
    start_processing ();
416
417
1.07k
    if (unlikely (!start))
418
43
    {
419
43
      end_processing ();
420
43
      return blob;
421
43
    }
422
423
1.03k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.03k
    sane = t->sanitize (this);
426
427
1.03k
    end_processing ();
428
429
1.03k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.03k
    if (sane)
431
837
    {
432
837
      hb_blob_make_immutable (blob);
433
837
      return blob;
434
837
    }
435
198
    else
436
198
    {
437
198
      hb_blob_destroy (blob);
438
198
      return hb_blob_get_empty ();
439
198
    }
440
1.03k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC const>(hb_blob_t*)
Line
Count
Source
408
251
  {
409
251
    bool sane;
410
411
251
    init (blob);
412
413
251
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
251
    start_processing ();
416
417
251
    if (unlikely (!start))
418
5
    {
419
5
      end_processing ();
420
5
      return blob;
421
5
    }
422
423
246
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
246
    sane = t->sanitize (this);
426
427
246
    end_processing ();
428
429
246
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
246
    if (sane)
431
165
    {
432
165
      hb_blob_make_immutable (blob);
433
165
      return blob;
434
165
    }
435
81
    else
436
81
    {
437
81
      hb_blob_destroy (blob);
438
81
      return hb_blob_get_empty ();
439
81
    }
440
246
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf const>(hb_blob_t*)
Line
Count
Source
408
7.08k
  {
409
7.08k
    bool sane;
410
411
7.08k
    init (blob);
412
413
7.08k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
7.08k
    start_processing ();
416
417
7.08k
    if (unlikely (!start))
418
475
    {
419
475
      end_processing ();
420
475
      return blob;
421
475
    }
422
423
6.60k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
6.60k
    sane = t->sanitize (this);
426
427
6.60k
    end_processing ();
428
429
6.60k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
6.60k
    if (sane)
431
6.60k
    {
432
6.60k
      hb_blob_make_immutable (blob);
433
6.60k
      return blob;
434
6.60k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
6.60k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hdmx const>(hb_blob_t*)
Line
Count
Source
408
111
  {
409
111
    bool sane;
410
411
111
    init (blob);
412
413
111
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
111
    start_processing ();
416
417
111
    if (unlikely (!start))
418
12
    {
419
12
      end_processing ();
420
12
      return blob;
421
12
    }
422
423
99
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
99
    sane = t->sanitize (this);
426
427
99
    end_processing ();
428
429
99
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
99
    if (sane)
431
80
    {
432
80
      hb_blob_make_immutable (blob);
433
80
      return blob;
434
80
    }
435
19
    else
436
19
    {
437
19
      hb_blob_destroy (blob);
438
19
      return hb_blob_get_empty ();
439
19
    }
440
99
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name const>(hb_blob_t*)
Line
Count
Source
408
2.87k
  {
409
2.87k
    bool sane;
410
411
2.87k
    init (blob);
412
413
2.87k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.87k
    start_processing ();
416
417
2.87k
    if (unlikely (!start))
418
210
    {
419
210
      end_processing ();
420
210
      return blob;
421
210
    }
422
423
2.66k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.66k
    sane = t->sanitize (this);
426
427
2.66k
    end_processing ();
428
429
2.66k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.66k
    if (sane)
431
2.19k
    {
432
2.19k
      hb_blob_make_immutable (blob);
433
2.19k
      return blob;
434
2.19k
    }
435
476
    else
436
476
    {
437
476
      hb_blob_destroy (blob);
438
476
      return hb_blob_get_empty ();
439
476
    }
440
2.66k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtx const>(hb_blob_t*)
Line
Count
Source
408
4.07k
  {
409
4.07k
    bool sane;
410
411
4.07k
    init (blob);
412
413
4.07k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
4.07k
    start_processing ();
416
417
4.07k
    if (unlikely (!start))
418
244
    {
419
244
      end_processing ();
420
244
      return blob;
421
244
    }
422
423
3.83k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
3.83k
    sane = t->sanitize (this);
426
427
3.83k
    end_processing ();
428
429
3.83k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
3.83k
    if (sane)
431
3.83k
    {
432
3.83k
      hb_blob_make_immutable (blob);
433
3.83k
      return blob;
434
3.83k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
3.83k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vmtx const>(hb_blob_t*)
Line
Count
Source
408
534
  {
409
534
    bool sane;
410
411
534
    init (blob);
412
413
534
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
534
    start_processing ();
416
417
534
    if (unlikely (!start))
418
24
    {
419
24
      end_processing ();
420
24
      return blob;
421
24
    }
422
423
510
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
510
    sane = t->sanitize (this);
426
427
510
    end_processing ();
428
429
510
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
510
    if (sane)
431
510
    {
432
510
      hb_blob_make_immutable (blob);
433
510
      return blob;
434
510
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
510
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp const>(hb_blob_t*)
Line
Count
Source
408
11.0k
  {
409
11.0k
    bool sane;
410
411
11.0k
    init (blob);
412
413
11.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
11.0k
    start_processing ();
416
417
11.0k
    if (unlikely (!start))
418
138
    {
419
138
      end_processing ();
420
138
      return blob;
421
138
    }
422
423
10.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
10.8k
    sane = t->sanitize (this);
426
427
10.8k
    end_processing ();
428
429
10.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
10.8k
    if (sane)
431
9.99k
    {
432
9.99k
      hb_blob_make_immutable (blob);
433
9.99k
      return blob;
434
9.99k
    }
435
876
    else
436
876
    {
437
876
      hb_blob_destroy (blob);
438
876
      return hb_blob_get_empty ();
439
876
    }
440
10.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap const>(hb_blob_t*)
Line
Count
Source
408
7.94k
  {
409
7.94k
    bool sane;
410
411
7.94k
    init (blob);
412
413
7.94k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
7.94k
    start_processing ();
416
417
7.94k
    if (unlikely (!start))
418
156
    {
419
156
      end_processing ();
420
156
      return blob;
421
156
    }
422
423
7.78k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
7.78k
    sane = t->sanitize (this);
426
427
7.78k
    end_processing ();
428
429
7.78k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
7.78k
    if (sane)
431
6.94k
    {
432
6.94k
      hb_blob_make_immutable (blob);
433
6.94k
      return blob;
434
6.94k
    }
435
842
    else
436
842
    {
437
842
      hb_blob_destroy (blob);
438
842
      return hb_blob_get_empty ();
439
842
    }
440
7.78k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2 const>(hb_blob_t*)
Line
Count
Source
408
5.20k
  {
409
5.20k
    bool sane;
410
411
5.20k
    init (blob);
412
413
5.20k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
5.20k
    start_processing ();
416
417
5.20k
    if (unlikely (!start))
418
406
    {
419
406
      end_processing ();
420
406
      return blob;
421
406
    }
422
423
4.79k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
4.79k
    sane = t->sanitize (this);
426
427
4.79k
    end_processing ();
428
429
4.79k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
4.79k
    if (sane)
431
4.57k
    {
432
4.57k
      hb_blob_make_immutable (blob);
433
4.57k
      return blob;
434
4.57k
    }
435
224
    else
436
224
    {
437
224
      hb_blob_destroy (blob);
438
224
      return hb_blob_get_empty ();
439
224
    }
440
4.79k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post const>(hb_blob_t*)
Line
Count
Source
408
2.90k
  {
409
2.90k
    bool sane;
410
411
2.90k
    init (blob);
412
413
2.90k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.90k
    start_processing ();
416
417
2.90k
    if (unlikely (!start))
418
608
    {
419
608
      end_processing ();
420
608
      return blob;
421
608
    }
422
423
2.29k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.29k
    sane = t->sanitize (this);
426
427
2.29k
    end_processing ();
428
429
2.29k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.29k
    if (sane)
431
2.17k
    {
432
2.17k
      hb_blob_make_immutable (blob);
433
2.17k
      return blob;
434
2.17k
    }
435
128
    else
436
128
    {
437
128
      hb_blob_destroy (blob);
438
128
      return hb_blob_get_empty ();
439
128
    }
440
2.29k
  }
441
442
  template <typename Type>
443
  hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag)
444
3.04M
  {
445
3.04M
    if (!num_glyphs_set)
446
2.10M
      set_num_glyphs (hb_face_get_glyph_count (face));
447
3.04M
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
3.04M
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF>(hb_face_t const*, unsigned int)
Line
Count
Source
444
76.1k
  {
445
76.1k
    if (!num_glyphs_set)
446
76.1k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
76.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
76.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB>(hb_face_t const*, unsigned int)
Line
Count
Source
444
98.1k
  {
445
98.1k
    if (!num_glyphs_set)
446
98.1k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
98.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
98.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::morx>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.1k
  {
445
36.1k
    if (!num_glyphs_set)
446
36.1k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ltag>(hb_face_t const*, unsigned int)
Line
Count
Source
444
285
  {
445
285
    if (!num_glyphs_set)
446
285
      set_num_glyphs (hb_face_get_glyph_count (face));
447
285
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
285
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::mort>(hb_face_t const*, unsigned int)
Line
Count
Source
444
35.0k
  {
445
35.0k
    if (!num_glyphs_set)
446
35.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
35.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
35.0k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::kerx>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.1k
  {
445
36.1k
    if (!num_glyphs_set)
446
36.1k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ankr>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.62k
  {
445
1.62k
    if (!num_glyphs_set)
446
1.62k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.62k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.62k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::trak>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.6k
  {
445
36.6k
    if (!num_glyphs_set)
446
36.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::feat>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.8k
  {
445
36.8k
    if (!num_glyphs_set)
446
36.8k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.8k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.8k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS>(hb_face_t const*, unsigned int)
Line
Count
Source
444
98.0k
  {
445
98.0k
    if (!num_glyphs_set)
446
98.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
98.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
98.0k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT>(hb_face_t const*, unsigned int)
Line
Count
Source
444
22.1k
  {
445
22.1k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
22.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
22.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::loca>(hb_face_t const*, unsigned int)
Line
Count
Source
444
103k
  {
445
103k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
103k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
103k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp>(hb_face_t const*, unsigned int)
Line
Count
Source
444
103k
  {
445
103k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
103k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
103k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head>(hb_face_t const*, unsigned int)
Line
Count
Source
444
112k
  {
445
112k
    if (!num_glyphs_set)
446
8.10k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
112k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
112k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
37.4k
  {
445
37.4k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
37.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
37.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap>(hb_face_t const*, unsigned int)
Line
Count
Source
444
137k
  {
445
137k
    if (!num_glyphs_set)
446
137k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
137k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
137k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2>(hb_face_t const*, unsigned int)
Line
Count
Source
444
37.4k
  {
445
37.4k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
37.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
37.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL>(hb_face_t const*, unsigned int)
Line
Count
Source
444
62.2k
  {
445
62.2k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
62.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
62.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
103k
  {
445
103k
    if (!num_glyphs_set)
446
103k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
103k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
103k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
89.6k
  {
445
89.6k
    if (!num_glyphs_set)
446
89.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
89.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
89.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
89.6k
  {
445
89.6k
    if (!num_glyphs_set)
446
89.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
89.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
89.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
89.5k
  {
445
89.5k
    if (!num_glyphs_set)
446
3.78k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
89.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
89.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
85.5k
  {
445
85.5k
    if (!num_glyphs_set)
446
462
      set_num_glyphs (hb_face_get_glyph_count (face));
447
85.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
85.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
86.5k
  {
445
86.5k
    if (!num_glyphs_set)
446
86.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
86.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
86.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
86.5k
  {
445
86.5k
    if (!num_glyphs_set)
446
86.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
86.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
86.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
84.2k
  {
445
84.2k
    if (!num_glyphs_set)
446
84.2k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
84.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
84.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned int, 3u>, 1196835154u> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
83.9k
  {
445
83.9k
    if (!num_glyphs_set)
446
83.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
83.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
83.9k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf>(hb_face_t const*, unsigned int)
Line
Count
Source
444
111k
  {
445
111k
    if (!num_glyphs_set)
446
111k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
111k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
111k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
103k
  {
445
103k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
103k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
103k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::SVG>(hb_face_t const*, unsigned int)
Line
Count
Source
444
64.3k
  {
445
64.3k
    if (!num_glyphs_set)
446
64.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
64.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
64.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC>(hb_face_t const*, unsigned int)
Line
Count
Source
444
64.3k
  {
445
64.3k
    if (!num_glyphs_set)
446
64.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
64.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
64.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBDT>(hb_face_t const*, unsigned int)
Line
Count
Source
444
64.5k
  {
445
64.5k
    if (!num_glyphs_set)
446
64.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
64.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
64.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix>(hb_face_t const*, unsigned int)
Line
Count
Source
444
64.3k
  {
445
64.3k
    if (!num_glyphs_set)
446
64.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
64.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
64.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff1>(hb_face_t const*, unsigned int)
Line
Count
Source
444
98.6k
  {
445
98.6k
    if (!num_glyphs_set)
446
98.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
98.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
98.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff2>(hb_face_t const*, unsigned int)
Line
Count
Source
444
61.7k
  {
445
61.7k
    if (!num_glyphs_set)
446
61.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
61.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
61.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::kern>(hb_face_t const*, unsigned int)
Line
Count
Source
444
34.3k
  {
445
34.3k
    if (!num_glyphs_set)
446
34.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
34.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
34.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::meta>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.4k
  {
445
36.4k
    if (!num_glyphs_set)
446
36.4k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.3k
  {
445
36.3k
    if (!num_glyphs_set)
446
36.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.4k
  {
445
36.4k
    if (!num_glyphs_set)
446
36.4k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VARC>(hb_face_t const*, unsigned int)
Line
Count
Source
444
64.3k
  {
445
64.3k
    if (!num_glyphs_set)
446
64.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
64.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
64.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG>(hb_face_t const*, unsigned int)
Line
Count
Source
444
36.7k
  {
445
36.7k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
36.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
36.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE>(hb_face_t const*, unsigned int)
Line
Count
Source
444
75.5k
  {
445
75.5k
    if (!num_glyphs_set)
446
38.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
75.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
75.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH>(hb_face_t const*, unsigned int)
Line
Count
Source
444
76.2k
  {
445
76.2k
    if (!num_glyphs_set)
446
39.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
76.2k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
76.2k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
83.6k
  {
445
83.6k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
83.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
83.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.41k
  {
445
2.41k
    if (!num_glyphs_set)
446
2.41k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.41k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.41k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.00k
  {
445
1.00k
    if (!num_glyphs_set)
446
1.00k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.00k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.00k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
13
  {
445
13
    if (!num_glyphs_set)
446
13
      set_num_glyphs (hb_face_get_glyph_count (face));
447
13
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
13
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
4
  {
445
4
    if (!num_glyphs_set)
446
4
      set_num_glyphs (hb_face_get_glyph_count (face));
447
4
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
4
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9
  {
445
9
    if (!num_glyphs_set)
446
9
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH const>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
3.38k
  {
445
3.38k
    if (!num_glyphs_set)
446
3.38k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
3.38k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
3.38k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
142
  {
445
142
    if (!num_glyphs_set)
446
142
      set_num_glyphs (hb_face_get_glyph_count (face));
447
142
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
142
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::NumType<true, unsigned short, 2u>, 1735811442u> const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.53k
  {
445
1.53k
    if (!num_glyphs_set)
446
1.53k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.53k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.53k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.00k
  {
445
1.00k
    if (!num_glyphs_set)
446
1.00k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.00k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.00k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
178
  {
445
178
    if (!num_glyphs_set)
446
178
      set_num_glyphs (hb_face_get_glyph_count (face));
447
178
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
178
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
16
  {
445
16
    if (!num_glyphs_set)
446
16
      set_num_glyphs (hb_face_get_glyph_count (face));
447
16
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
16
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
220
  {
445
220
    if (!num_glyphs_set)
446
220
      set_num_glyphs (hb_face_get_glyph_count (face));
447
220
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
220
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
352
  {
445
352
    if (!num_glyphs_set)
446
352
      set_num_glyphs (hb_face_get_glyph_count (face));
447
352
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
352
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
214
  {
445
214
    if (!num_glyphs_set)
446
214
      set_num_glyphs (hb_face_get_glyph_count (face));
447
214
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
214
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
6.64k
  {
445
6.64k
    if (!num_glyphs_set)
446
6.64k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
6.64k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
6.64k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1.07k
  {
445
1.07k
    if (!num_glyphs_set)
446
1.07k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1.07k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1.07k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
251
  {
445
251
    if (!num_glyphs_set)
446
251
      set_num_glyphs (hb_face_get_glyph_count (face));
447
251
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
251
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
7.08k
  {
445
7.08k
    if (!num_glyphs_set)
446
7.08k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
7.08k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
7.08k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hdmx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
111
  {
445
111
    if (!num_glyphs_set)
446
111
      set_num_glyphs (hb_face_get_glyph_count (face));
447
111
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
111
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.87k
  {
445
2.87k
    if (!num_glyphs_set)
446
2.87k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.87k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.87k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
4.07k
  {
445
4.07k
    if (!num_glyphs_set)
446
4.07k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
4.07k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
4.07k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vmtx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
534
  {
445
534
    if (!num_glyphs_set)
446
534
      set_num_glyphs (hb_face_get_glyph_count (face));
447
534
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
534
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
11.0k
  {
445
11.0k
    if (!num_glyphs_set)
446
11.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
11.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
11.0k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
7.94k
  {
445
7.94k
    if (!num_glyphs_set)
446
7.94k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
7.94k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
7.94k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2 const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
5.20k
  {
445
5.20k
    if (!num_glyphs_set)
446
5.20k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
5.20k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
5.20k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.90k
  {
445
2.90k
    if (!num_glyphs_set)
446
2.90k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.90k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.90k
  }
449
450
  const char *start, *end;
451
  unsigned length;
452
  mutable int max_ops, max_subtables;
453
  private:
454
  int recursion_depth;
455
  bool writable;
456
  hb_blob_t *blob;
457
  unsigned int num_glyphs;
458
  bool  num_glyphs_set;
459
  public:
460
  bool lazy_some_gpos;
461
};
462
463
struct hb_sanitize_with_object_t
464
{
465
  template <typename T>
466
12.1k
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
12.1k
  { c->set_object (obj); }
hb_sanitize_with_object_t::hb_sanitize_with_object_t<AAT::KerxSubTable const*>(hb_sanitize_context_t*, AAT::KerxSubTable const* const&)
Line
Count
Source
466
5.04k
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
5.04k
  { c->set_object (obj); }
hb_sanitize_with_object_t::hb_sanitize_with_object_t<OT::KernSubTable<OT::KernOTSubTableHeader> const*>(hb_sanitize_context_t*, OT::KernSubTable<OT::KernOTSubTableHeader> const* const&)
Line
Count
Source
466
3.95k
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
3.95k
  { c->set_object (obj); }
hb_sanitize_with_object_t::hb_sanitize_with_object_t<OT::KernSubTable<OT::KernAATSubTableHeader> const*>(hb_sanitize_context_t*, OT::KernSubTable<OT::KernAATSubTableHeader> const* const&)
Line
Count
Source
466
3.11k
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
3.11k
  { c->set_object (obj); }
468
  ~hb_sanitize_with_object_t ()
469
12.1k
  { c->reset_object (); }
470
471
  private:
472
  hb_sanitize_context_t *c;
473
};
474
475
476
#endif /* HB_SANITIZE_HH */