Coverage Report

Created: 2026-11-06 11:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/workdir/UnpackedTarball/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
70.8M
#define HB_SANITIZE_MAX_OPS_MIN 16384
115
#endif
116
#ifndef HB_SANITIZE_MAX_OPS_MAX
117
89.0M
#define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF
118
#endif
119
#ifndef HB_SANITIZE_MAX_SUBTABLES
120
21.9k
#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
70.8M
  start (start_), end (end_),
128
70.8M
  length (0),
129
70.8M
  max_ops (0), max_subtables (0),
130
70.8M
        recursion_depth (0),
131
70.8M
  writable (false),
132
70.8M
  blob (nullptr),
133
70.8M
  num_glyphs (65536),
134
70.8M
  num_glyphs_set (false),
135
70.8M
  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
103k
  {
141
103k
    return format->sanitize (this) &&
142
103k
     hb_barrier ();
143
103k
  }
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
2.96k
  {
141
2.96k
    return format->sanitize (this) &&
142
2.91k
     hb_barrier ();
143
2.96k
  }
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
5.08k
  {
141
5.08k
    return format->sanitize (this) &&
142
5.06k
     hb_barrier ();
143
5.08k
  }
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
11.6k
  {
141
11.6k
    return format->sanitize (this) &&
142
11.6k
     hb_barrier ();
143
11.6k
  }
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
18.0k
  {
141
18.0k
    return format->sanitize (this) &&
142
18.0k
     hb_barrier ();
143
18.0k
  }
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
7.19k
  {
141
7.19k
    return format->sanitize (this) &&
142
7.16k
     hb_barrier ();
143
7.19k
  }
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
25.1k
  {
141
25.1k
    return format->sanitize (this) &&
142
25.1k
     hb_barrier ();
143
25.1k
  }
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
961
  {
141
961
    return format->sanitize (this) &&
142
951
     hb_barrier ();
143
961
  }
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
116
  {
141
116
    return format->sanitize (this) &&
142
116
     hb_barrier ();
143
116
  }
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
4.45k
  {
141
4.45k
    return format->sanitize (this) &&
142
4.43k
     hb_barrier ();
143
4.45k
  }
bool hb_sanitize_context_t::may_dispatch<OT::Condition, OT::NumType<true, unsigned short, 2u> >(OT::Condition const*, OT::NumType<true, unsigned short, 2u> const*)
Line
Count
Source
140
54
  {
141
54
    return format->sanitize (this) &&
142
36
     hb_barrier ();
143
54
  }
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
12.5k
  {
141
12.5k
    return format->sanitize (this) &&
142
12.5k
     hb_barrier ();
143
12.5k
  }
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
7.34k
  {
141
7.34k
    return format->sanitize (this) &&
142
7.28k
     hb_barrier ();
143
7.34k
  }
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
1.72k
  {
141
1.72k
    return format->sanitize (this) &&
142
1.70k
     hb_barrier ();
143
1.72k
  }
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
2.66k
  {
141
2.66k
    return format->sanitize (this) &&
142
2.64k
     hb_barrier ();
143
2.66k
  }
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
1.12k
  {
141
1.12k
    return format->sanitize (this) &&
142
1.10k
     hb_barrier ();
143
1.12k
  }
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
867
  {
141
867
    return format->sanitize (this) &&
142
858
     hb_barrier ();
143
867
  }
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
1.84k
  {
141
1.84k
    return format->sanitize (this) &&
142
1.82k
     hb_barrier ();
143
1.84k
  }
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
112
  {
141
112
    return format->sanitize (this) &&
142
112
     hb_barrier ();
143
112
  }
Unexecuted instantiation: 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*)
Unexecuted instantiation: 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*)
144
1.15M
  static return_t default_return_value () { return true; }
145
412
  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
21.9k
  {
150
21.9k
    max_subtables += count;
151
21.9k
    return max_subtables < HB_SANITIZE_MAX_SUBTABLES;
152
21.9k
  }
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
51.6M
  hb_sanitize_context_t (hb_blob_t *b) : hb_sanitize_context_t ()
167
51.6M
  {
168
51.6M
    init (b);
169
170
51.6M
    if (blob)
171
51.6M
      start_processing ();
172
51.6M
  }
173
174
  ~hb_sanitize_context_t ()
175
70.8M
  {
176
70.8M
    if (blob)
177
51.6M
      end_processing ();
178
70.8M
  }
179
180
  void init (hb_blob_t *b)
181
70.8M
  {
182
70.8M
    this->blob = hb_blob_reference (b);
183
70.8M
    this->writable = false;
184
70.8M
  }
185
186
  void set_num_glyphs (unsigned int num_glyphs_)
187
19.1M
  {
188
19.1M
    num_glyphs = num_glyphs_;
189
19.1M
    num_glyphs_set = true;
190
19.1M
  }
191
5
  unsigned int get_num_glyphs () { return num_glyphs; }
192
193
18.2M
  void set_max_ops (int max_ops_) { max_ops = max_ops_; }
194
195
  template <typename T>
196
  void set_object (const T *obj)
197
3.45M
  {
198
3.45M
    reset_object ();
199
200
3.45M
    if (!obj) return;
201
202
607
    const char *obj_start = (const char *) obj;
203
607
    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
607
    else
209
607
    {
210
607
      this->start = obj_start;
211
607
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
607
      this->length = this->end - this->start;
213
607
    }
214
607
  }
void hb_sanitize_context_t::set_object<AAT::KerxSubTable>(AAT::KerxSubTable const*)
Line
Count
Source
197
51
  {
198
51
    reset_object ();
199
200
51
    if (!obj) return;
201
202
50
    const char *obj_start = (const char *) obj;
203
50
    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
50
    else
209
50
    {
210
50
      this->start = obj_start;
211
50
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
50
      this->length = this->end - this->start;
213
50
    }
214
50
  }
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernOTSubTableHeader> >(OT::KernSubTable<OT::KernOTSubTableHeader> const*)
Line
Count
Source
197
3.45M
  {
198
3.45M
    reset_object ();
199
200
3.45M
    if (!obj) return;
201
202
472
    const char *obj_start = (const char *) obj;
203
472
    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
472
    else
209
472
    {
210
472
      this->start = obj_start;
211
472
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
472
      this->length = this->end - this->start;
213
472
    }
214
472
  }
void hb_sanitize_context_t::set_object<OT::KernSubTable<OT::KernAATSubTableHeader> >(OT::KernSubTable<OT::KernAATSubTableHeader> const*)
Line
Count
Source
197
106
  {
198
106
    reset_object ();
199
200
106
    if (!obj) return;
201
202
85
    const char *obj_start = (const char *) obj;
203
85
    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
85
    else
209
85
    {
210
85
      this->start = obj_start;
211
85
      this->end   = obj_start + hb_min (size_t (this->end - obj_start), obj->get_size ());
212
85
      this->length = this->end - this->start;
213
85
    }
214
85
  }
215
216
  void reset_object ()
217
77.7M
  {
218
77.7M
    if (this->blob)
219
77.7M
    {
220
77.7M
      this->start = this->blob->data;
221
77.7M
      this->end = this->start + this->blob->length;
222
77.7M
    }
223
77.7M
    this->length = this->end - this->start;
224
77.7M
    assert (this->start <= this->end); /* Must not overflow. */
225
77.7M
  }
226
227
  void start_processing (const char *start_ = nullptr, const char *end_ = nullptr)
228
70.8M
  {
229
70.8M
    if (start_)
230
0
    {
231
0
      this->start = start_;
232
0
      this->end = end_;
233
0
    }
234
70.8M
    reset_object ();
235
70.8M
    unsigned m;
236
70.8M
    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
70.8M
    else
239
70.8M
      this->max_ops = hb_clamp (m,
240
70.8M
        (unsigned) HB_SANITIZE_MAX_OPS_MIN,
241
70.8M
        (unsigned) HB_SANITIZE_MAX_OPS_MAX);
242
70.8M
    this->debug_depth = 0;
243
70.8M
    this->recursion_depth = 0;
244
245
70.8M
    DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1,
246
70.8M
         "start [%p..%p] (%lu bytes)",
247
70.8M
         this->start, this->end,
248
70.8M
         (unsigned long) (this->end - this->start));
249
70.8M
  }
250
251
  void end_processing ()
252
70.8M
  {
253
70.8M
    DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1,
254
70.8M
         "end [%p..%p]",
255
70.8M
         this->start, this->end);
256
257
70.8M
    hb_blob_destroy (this->blob);
258
70.8M
    this->blob = nullptr;
259
70.8M
    this->start = this->end = nullptr;
260
70.8M
    this->length = 0;
261
70.8M
  }
262
263
  bool check_ops(unsigned count)
264
550
  {
265
    /* Avoid underflow */
266
550
    if (unlikely (this->max_ops < 0 || count >= (unsigned) this->max_ops))
267
74
    {
268
74
      this->max_ops = -1;
269
74
      return false;
270
74
    }
271
476
    this->max_ops -= (int) count;
272
476
    return true;
273
550
  }
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
1.08M
  {
281
1.08M
    const char *p = (const char *) base;
282
1.08M
    bool ok = (uintptr_t) (p - this->start) <= this->length &&
283
1.08M
        (unsigned int) (this->end - p) >= len &&
284
1.07M
        ((this->max_ops -= len) > 0);
285
286
1.08M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
287
1.08M
         "check_range [%p..%p]"
288
1.08M
         " (%u bytes) in [%p..%p] -> %s",
289
1.08M
         p, p + len, len,
290
1.08M
         this->start, this->end,
291
1.08M
         ok ? "OK" : "OUT-OF-RANGE");
292
293
1.08M
    return likely (ok);
294
1.08M
  }
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
7.85M
  {
320
7.85M
    const char *p = (const char *) base;
321
7.85M
    bool ok = (uintptr_t) (p - this->start) <= this->length;
322
323
7.85M
    DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
324
7.85M
         "check_point [%p]"
325
7.85M
         " in [%p..%p] -> %s",
326
7.85M
         p,
327
7.85M
         this->start, this->end,
328
7.85M
         ok ? "OK" : "OUT-OF-RANGE");
329
330
7.85M
    return likely (ok);
331
7.85M
  }
332
333
  template <typename T>
334
  bool check_range (const T *base,
335
        unsigned int a,
336
        unsigned int b) const
337
403k
  {
338
403k
    unsigned m;
339
403k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
403k
     this->check_range (base, m);
341
403k
  }
bool hb_sanitize_context_t::check_range<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int, unsigned int) const
Line
Count
Source
337
23
  {
338
23
    unsigned m;
339
23
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
22
     this->check_range (base, m);
341
23
  }
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
359k
  {
338
359k
    unsigned m;
339
359k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
359k
     this->check_range (base, m);
341
359k
  }
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
124
  {
338
124
    unsigned m;
339
124
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
124
     this->check_range (base, m);
341
124
  }
bool hb_sanitize_context_t::check_range<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
148
  {
338
148
    unsigned m;
339
148
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
148
     this->check_range (base, m);
341
148
  }
bool hb_sanitize_context_t::check_range<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*, unsigned int, unsigned int) const
Line
Count
Source
337
65
  {
338
65
    unsigned m;
339
65
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
65
     this->check_range (base, m);
341
65
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Feature>(AAT::Feature const*, unsigned int, unsigned int) const
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
583
  {
338
583
    unsigned m;
339
583
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
583
     this->check_range (base, m);
341
583
  }
bool hb_sanitize_context_t::check_range<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int, unsigned int) const
Line
Count
Source
337
87
  {
338
87
    unsigned m;
339
87
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
87
     this->check_range (base, m);
341
87
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int, unsigned int) const
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
1
  {
338
1
    unsigned m;
339
1
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1
     this->check_range (base, m);
341
1
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::FeatureName>(AAT::FeatureName const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<AAT::SettingName>(AAT::SettingName const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<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::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
9.54k
  {
338
9.54k
    unsigned m;
339
9.54k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
9.54k
     this->check_range (base, m);
341
9.54k
  }
bool hb_sanitize_context_t::check_range<void>(void const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.62k
  {
338
1.62k
    unsigned m;
339
1.62k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.62k
     this->check_range (base, m);
341
1.62k
  }
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
4
  {
338
4
    unsigned m;
339
4
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4
     this->check_range (base, m);
341
4
  }
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<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
1.74k
  {
338
1.74k
    unsigned m;
339
1.74k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
1.73k
     this->check_range (base, m);
341
1.74k
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
7
  {
338
7
    unsigned m;
339
7
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
7
     this->check_range (base, m);
341
7
  }
bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> const*, unsigned int, unsigned int) const
Line
Count
Source
337
31
  {
338
31
    unsigned m;
339
31
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
31
     this->check_range (base, m);
341
31
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::OffsetTo<OT::AxisValue, OT::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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::AxisRecord>(OT::AxisRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::InstanceRecord>(OT::InstanceRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::LayerRecord>(OT::LayerRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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
4
  {
338
4
    unsigned m;
339
4
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
4
     this->check_range (base, m);
341
4
  }
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
2
  {
338
2
    unsigned m;
339
2
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
2
     this->check_range (base, m);
341
2
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<unsigned char>(unsigned char const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_range<OT::NameRecord>(OT::NameRecord const*, unsigned int, unsigned int) const
Line
Count
Source
337
29.5k
  {
338
29.5k
    unsigned m;
339
29.5k
    return !hb_unsigned_mul_overflows (a, b, &m) &&
340
29.5k
     this->check_range (base, m);
341
29.5k
  }
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
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
0
  {
349
0
    unsigned m;
350
0
    return !hb_unsigned_mul_overflows (a, b, &m) &&
351
0
     this->check_range (base, m, c);
352
0
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_range<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int, unsigned int) const
Unexecuted instantiation: 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
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
601k
  {
358
601k
    if (len_size >= 4)
359
13.2k
    {
360
13.2k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
146
  return false;
362
13.2k
    }
363
587k
    else
364
587k
      len = len * hb_static_size (T);
365
601k
    return this->check_range (base, len);
366
601k
  }
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
13.4k
  {
358
13.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
13.4k
    else
364
13.4k
      len = len * hb_static_size (T);
365
13.4k
    return this->check_range (base, len);
366
13.4k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > const*, unsigned int, unsigned int) const
Line
Count
Source
357
4.17k
  {
358
4.17k
    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.17k
    else
364
4.17k
      len = len * hb_static_size (T);
365
4.17k
    return this->check_range (base, len);
366
4.17k
  }
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
62
  {
358
62
    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
62
    else
364
62
      len = len * hb_static_size (T);
365
62
    return this->check_range (base, len);
366
62
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > const*, unsigned int, unsigned int) const
Line
Count
Source
357
286
  {
358
286
    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
286
    else
364
286
      len = len * hb_static_size (T);
365
286
    return this->check_range (base, len);
366
286
  }
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int, unsigned int) const
Line
Count
Source
357
45.1k
  {
358
45.1k
    if (len_size >= 4)
359
140
    {
360
140
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
7
  return false;
362
140
    }
363
44.9k
    else
364
44.9k
      len = len * hb_static_size (T);
365
45.1k
    return this->check_range (base, len);
366
45.1k
  }
bool hb_sanitize_context_t::check_array_sized<OT::HBGlyphID24>(OT::HBGlyphID24 const*, unsigned int, unsigned int) const
Line
Count
Source
357
387
  {
358
387
    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
387
    else
364
387
      len = len * hb_static_size (T);
365
387
    return this->check_range (base, len);
366
387
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > const*, unsigned int, unsigned int) const
Line
Count
Source
357
556
  {
358
556
    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
556
    else
364
556
      len = len * hb_static_size (T);
365
556
    return this->check_range (base, len);
366
556
  }
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
192
  {
358
192
    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
192
    else
364
192
      len = len * hb_static_size (T);
365
192
    return this->check_range (base, len);
366
192
  }
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
461
  {
358
461
    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
461
    else
364
461
      len = len * hb_static_size (T);
365
461
    return this->check_range (base, len);
366
461
  }
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
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::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
15
  {
358
15
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
15
    else
364
15
      len = len * hb_static_size (T);
365
15
    return this->check_range (base, len);
366
15
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
51
  {
358
51
    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
    else
364
51
      len = len * hb_static_size (T);
365
51
    return this->check_range (base, len);
366
51
  }
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
20
  {
358
20
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
20
    else
364
20
      len = len * hb_static_size (T);
365
20
    return this->check_range (base, len);
366
20
  }
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
3.29k
  {
358
3.29k
    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.29k
    else
364
3.29k
      len = len * hb_static_size (T);
365
3.29k
    return this->check_range (base, len);
366
3.29k
  }
bool hb_sanitize_context_t::check_array_sized<OT::Index>(OT::Index const*, unsigned int, unsigned int) const
Line
Count
Source
357
45.3k
  {
358
45.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
45.3k
    else
364
45.3k
      len = len * hb_static_size (T);
365
45.3k
    return this->check_range (base, len);
366
45.3k
  }
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
4.31k
  {
358
4.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
4.31k
    else
364
4.31k
      len = len * hb_static_size (T);
365
4.31k
    return this->check_range (base, len);
366
4.31k
  }
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
2.10k
  {
358
2.10k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
2.10k
    else
364
2.10k
      len = len * hb_static_size (T);
365
2.10k
    return this->check_range (base, len);
366
2.10k
  }
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
2.01k
  {
358
2.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
2.01k
    else
364
2.01k
      len = len * hb_static_size (T);
365
2.01k
    return this->check_range (base, len);
366
2.01k
  }
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
22.1k
  {
358
22.1k
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
22.1k
    else
364
22.1k
      len = len * hb_static_size (T);
365
22.1k
    return this->check_range (base, len);
366
22.1k
  }
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
13.0k
  {
358
13.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
13.0k
    else
364
13.0k
      len = len * hb_static_size (T);
365
13.0k
    return this->check_range (base, len);
366
13.0k
  }
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
1.34k
  {
358
1.34k
    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.34k
    else
364
1.34k
      len = len * hb_static_size (T);
365
1.34k
    return this->check_range (base, len);
366
1.34k
  }
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
56
  {
358
56
    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
56
    else
364
56
      len = len * hb_static_size (T);
365
56
    return this->check_range (base, len);
366
56
  }
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
504
  {
358
504
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
504
    else
364
504
      len = len * hb_static_size (T);
365
504
    return this->check_range (base, len);
366
504
  }
bool hb_sanitize_context_t::check_array_sized<OT::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
30
  {
358
30
    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
    else
364
30
      len = len * hb_static_size (T);
365
30
    return this->check_range (base, len);
366
30
  }
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
810
  {
358
810
    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
810
    else
364
810
      len = len * hb_static_size (T);
365
810
    return this->check_range (base, len);
366
810
  }
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
2.30k
  {
358
2.30k
    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.30k
    else
364
2.30k
      len = len * hb_static_size (T);
365
2.30k
    return this->check_range (base, len);
366
2.30k
  }
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
136
  {
358
136
    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
136
    else
364
136
      len = len * hb_static_size (T);
365
136
    return this->check_range (base, len);
366
136
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
50
  {
358
50
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
50
    else
364
50
      len = len * hb_static_size (T);
365
50
    return this->check_range (base, len);
366
50
  }
bool hb_sanitize_context_t::check_array_sized<OT::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
387
  {
358
387
    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
387
    else
364
387
      len = len * hb_static_size (T);
365
387
    return this->check_range (base, len);
366
387
  }
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
1.54k
  {
358
1.54k
    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.54k
    else
364
1.54k
      len = len * hb_static_size (T);
365
1.54k
    return this->check_range (base, len);
366
1.54k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
257
  {
358
257
    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
257
    else
364
257
      len = len * hb_static_size (T);
365
257
    return this->check_range (base, len);
366
257
  }
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
69
  {
358
69
    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
69
    else
364
69
      len = len * hb_static_size (T);
365
69
    return this->check_range (base, len);
366
69
  }
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
23
  {
358
23
    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
23
    else
364
23
      len = len * hb_static_size (T);
365
23
    return this->check_range (base, len);
366
23
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
74
  {
358
74
    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
74
    else
364
74
      len = len * hb_static_size (T);
365
74
    return this->check_range (base, len);
366
74
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
56
  {
358
56
    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
56
    else
364
56
      len = len * hb_static_size (T);
365
56
    return this->check_range (base, len);
366
56
  }
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
838
  {
358
838
    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
838
    else
364
838
      len = len * hb_static_size (T);
365
838
    return this->check_range (base, len);
366
838
  }
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
1.62k
  {
358
1.62k
    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.62k
    else
364
1.62k
      len = len * hb_static_size (T);
365
1.62k
    return this->check_range (base, len);
366
1.62k
  }
bool hb_sanitize_context_t::check_array_sized<OT::LookupRecord>(OT::LookupRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
361k
  {
358
361k
    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
361k
    else
364
361k
      len = len * hb_static_size (T);
365
361k
    return this->check_range (base, len);
366
361k
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
800
  {
358
800
    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
800
    else
364
800
      len = len * hb_static_size (T);
365
800
    return this->check_range (base, len);
366
800
  }
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
7.32k
  {
358
7.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
7.32k
    else
364
7.32k
      len = len * hb_static_size (T);
365
7.32k
    return this->check_range (base, len);
366
7.32k
  }
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
379
  {
358
379
    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
379
    else
364
379
      len = len * hb_static_size (T);
365
379
    return this->check_range (base, len);
366
379
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
19
  {
358
19
    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
    else
364
19
      len = len * hb_static_size (T);
365
19
    return this->check_range (base, len);
366
19
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
76
  {
358
76
    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
76
    else
364
76
      len = len * hb_static_size (T);
365
76
    return this->check_range (base, len);
366
76
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
28
  {
358
28
    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
28
    else
364
28
      len = len * hb_static_size (T);
365
28
    return this->check_range (base, len);
366
28
  }
bool hb_sanitize_context_t::check_array_sized<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*, unsigned int, unsigned int) const
Line
Count
Source
357
44
  {
358
44
    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
44
    else
364
44
      len = len * hb_static_size (T);
365
44
    return this->check_range (base, len);
366
44
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
70
  {
358
70
    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
70
    else
364
70
      len = len * hb_static_size (T);
365
70
    return this->check_range (base, len);
366
70
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatureVariationRecord>(OT::FeatureVariationRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
81
  {
358
81
    if (len_size >= 4)
359
81
    {
360
81
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
1
  return false;
362
81
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
80
    return this->check_range (base, len);
366
81
  }
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
58
  {
358
58
    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
    else
364
58
      len = len * hb_static_size (T);
365
58
    return this->check_range (base, len);
366
58
  }
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
12
  {
358
12
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
12
    else
364
12
      len = len * hb_static_size (T);
365
12
    return this->check_range (base, len);
366
12
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
18
  {
358
18
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
18
    else
364
18
      len = len * hb_static_size (T);
365
18
    return this->check_range (base, len);
366
18
  }
bool hb_sanitize_context_t::check_array_sized<OT::LookupVariationRecord>(OT::LookupVariationRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
17
  {
358
17
    if (len_size >= 4)
359
17
    {
360
17
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
2
  return false;
362
17
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
15
    return this->check_range (base, len);
366
17
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::LookupConditionRecord>(OT::LookupConditionRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::FTStringRange>(AAT::FTStringRange const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::NumType<true, unsigned char, 1u> >(OT::NumType<true, unsigned char, 1u> const*, unsigned int, unsigned int) const
Line
Count
Source
357
56
  {
358
56
    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
56
    else
364
56
      len = len * hb_static_size (T);
365
56
    return this->check_range (base, len);
366
56
  }
bool hb_sanitize_context_t::check_array_sized<AAT::KernPair>(AAT::KernPair const*, unsigned int, unsigned int) const
Line
Count
Source
357
217
  {
358
217
    if (len_size >= 4)
359
217
    {
360
217
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
1
  return false;
362
217
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
216
    return this->check_range (base, len);
366
217
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<AAT::Anchor>(AAT::Anchor const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SparseVarRegionAxis, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVarRegionAxis, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::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
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::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
8.94k
  {
358
8.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
8.94k
    else
364
8.94k
      len = len * hb_static_size (T);
365
8.94k
    return this->check_range (base, len);
366
8.94k
  }
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
583
  {
358
583
    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
583
    else
364
583
      len = len * hb_static_size (T);
365
583
    return this->check_range (base, len);
366
583
  }
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
150
  {
358
150
    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
150
    else
364
150
      len = len * hb_static_size (T);
365
150
    return this->check_range (base, len);
366
150
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::EntryExitRecord<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::EntryExitRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
142
  {
358
142
    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
142
    else
364
142
      len = len * hb_static_size (T);
365
142
    return this->check_range (base, len);
366
142
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::EntryExitRecord<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::EntryExitRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
11
  {
358
11
    if (len_size >= 4)
359
0
    {
360
0
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
0
    }
363
11
    else
364
11
      len = len * hb_static_size (T);
365
11
    return this->check_range (base, len);
366
11
  }
bool hb_sanitize_context_t::check_array_sized<OT::Layout::GPOS_impl::MarkRecord<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkRecord<OT::Layout::SmallTypes> 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::Layout::GPOS_impl::MarkRecord<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
38
  {
358
38
    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
    else
364
38
      len = len * hb_static_size (T);
365
38
    return this->check_range (base, len);
366
38
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
78
  {
358
78
    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
78
    else
364
78
      len = len * hb_static_size (T);
365
78
    return this->check_range (base, len);
366
78
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
24
  {
358
24
    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
    else
364
24
      len = len * hb_static_size (T);
365
24
    return this->check_range (base, len);
366
24
  }
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
988
  {
358
988
    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
988
    else
364
988
      len = len * hb_static_size (T);
365
988
    return this->check_range (base, len);
366
988
  }
bool hb_sanitize_context_t::check_array_sized<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u>, void, true> const*, unsigned int, unsigned int) const
Line
Count
Source
357
146
  {
358
146
    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
146
    else
364
146
      len = len * hb_static_size (T);
365
146
    return this->check_range (base, len);
366
146
  }
bool hb_sanitize_context_t::check_array_sized<OT::TableRecord>(OT::TableRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
10.5k
  {
358
10.5k
    if (len_size >= 4)
359
10.5k
    {
360
10.5k
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
0
  return false;
362
10.5k
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
10.5k
    return this->check_range (base, len);
366
10.5k
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::EncodingRecord>(OT::EncodingRecord 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::CmapSubtableLongGroup>(OT::CmapSubtableLongGroup const*, unsigned int, unsigned int) const
Line
Count
Source
357
815
  {
358
815
    if (len_size >= 4)
359
815
    {
360
815
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
58
  return false;
362
815
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
757
    return this->check_range (base, len);
366
815
  }
bool hb_sanitize_context_t::check_array_sized<OT::VariationSelectorRecord<OT::Layout::SmallTypes> >(OT::VariationSelectorRecord<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
310
  {
358
310
    if (len_size >= 4)
359
310
    {
360
310
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
5
  return false;
362
310
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
305
    return this->check_range (base, len);
366
310
  }
bool hb_sanitize_context_t::check_array_sized<OT::UnicodeValueRange>(OT::UnicodeValueRange const*, unsigned int, unsigned int) const
Line
Count
Source
357
411
  {
358
411
    if (len_size >= 4)
359
411
    {
360
411
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
14
  return false;
362
411
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
397
    return this->check_range (base, len);
366
411
  }
bool hb_sanitize_context_t::check_array_sized<OT::UVSMapping<OT::Layout::SmallTypes> >(OT::UVSMapping<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
233
  {
358
233
    if (len_size >= 4)
359
233
    {
360
233
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
6
  return false;
362
233
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
227
    return this->check_range (base, len);
366
233
  }
bool hb_sanitize_context_t::check_array_sized<OT::VariationSelectorRecord<OT::Layout::MediumTypes> >(OT::VariationSelectorRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
286
  {
358
286
    if (len_size >= 4)
359
286
    {
360
286
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
38
  return false;
362
286
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
248
    return this->check_range (base, len);
366
286
  }
bool hb_sanitize_context_t::check_array_sized<OT::UVSMapping<OT::Layout::MediumTypes> >(OT::UVSMapping<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Line
Count
Source
357
182
  {
358
182
    if (len_size >= 4)
359
182
    {
360
182
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
9
  return false;
362
182
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
173
    return this->check_range (base, len);
366
182
  }
bool hb_sanitize_context_t::check_array_sized<OT::AxisValueMap>(OT::AxisValueMap const*, unsigned int, unsigned int) const
Line
Count
Source
357
520
  {
358
520
    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
520
    else
364
520
      len = len * hb_static_size (T);
365
520
    return this->check_range (base, len);
366
520
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::ClipRecord>(OT::ClipRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::BitmapSizeTable>(OT::BitmapSizeTable const*, unsigned int, unsigned int) const
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
56
  {
358
56
    if (len_size >= 4)
359
56
    {
360
56
      if (unlikely (hb_unsigned_mul_overflows (len, hb_static_size (T), &len)))
361
5
  return false;
362
56
    }
363
0
    else
364
0
      len = len * hb_static_size (T);
365
51
    return this->check_range (base, len);
366
56
  }
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<CFF::Encoding1_Range>(CFF::Encoding1_Range const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<CFF::SuppEncoding>(CFF::SuppEncoding const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::DataMap>(OT::DataMap const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::VertOriginMetric<OT::Layout::SmallTypes> >(OT::VertOriginMetric<OT::Layout::SmallTypes> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::VertOriginMetric<OT::Layout::MediumTypes> >(OT::VertOriginMetric<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
bool hb_sanitize_context_t::check_array_sized<OT::Tag>(OT::Tag const*, unsigned int, unsigned int) const
Line
Count
Source
357
127
  {
358
127
    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
127
    else
364
127
      len = len * hb_static_size (T);
365
127
    return this->check_range (base, len);
366
127
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseScriptRecord>(OT::BaseScriptRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
176
  {
358
176
    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
176
    else
364
176
      len = len * hb_static_size (T);
365
176
    return this->check_range (base, len);
366
176
  }
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
327
  {
358
327
    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
327
    else
364
327
      len = len * hb_static_size (T);
365
327
    return this->check_range (base, len);
366
327
  }
bool hb_sanitize_context_t::check_array_sized<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
611
  {
358
611
    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
611
    else
364
611
      len = len * hb_static_size (T);
365
611
    return this->check_range (base, len);
366
611
  }
bool hb_sanitize_context_t::check_array_sized<OT::BaseLangSysRecord>(OT::BaseLangSysRecord const*, unsigned int, unsigned int) const
Line
Count
Source
357
934
  {
358
934
    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
934
    else
364
934
      len = len * hb_static_size (T);
365
934
    return this->check_range (base, len);
366
934
  }
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::JstfScriptRecord<OT::Layout::SmallTypes> >(OT::JstfScriptRecord<OT::Layout::SmallTypes> 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::JstfScriptRecord<OT::Layout::MediumTypes> >(OT::JstfScriptRecord<OT::Layout::MediumTypes> const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::MathKernInfoRecord>(OT::MathKernInfoRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphPartRecord>(OT::MathGlyphPartRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::MathGlyphVariantRecord>(OT::MathGlyphVariantRecord const*, unsigned int, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array_sized<OT::GaspRange>(OT::GaspRange const*, unsigned int, unsigned int) const
367
368
  template <typename T>
369
  bool check_array (const T *base, unsigned int len) const
370
391k
  {
371
391k
    return this->check_range (base, len, hb_static_size (T));
372
391k
  }
bool hb_sanitize_context_t::check_array<OT::VarRegionAxis>(OT::VarRegionAxis const*, unsigned int) const
Line
Count
Source
370
23
  {
371
23
    return this->check_range (base, len, hb_static_size (T));
372
23
  }
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
124
  {
371
124
    return this->check_range (base, len, hb_static_size (T));
372
124
  }
bool hb_sanitize_context_t::check_array<OT::LookupRecord>(OT::LookupRecord const*, unsigned int) const
Line
Count
Source
370
148
  {
371
148
    return this->check_range (base, len, hb_static_size (T));
372
148
  }
bool hb_sanitize_context_t::check_array<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*, unsigned int) const
Line
Count
Source
370
65
  {
371
65
    return this->check_range (base, len, hb_static_size (T));
372
65
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Feature>(AAT::Feature const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned short, 2u> >(OT::NumType<true, unsigned short, 2u> const*, unsigned int) const
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
359k
  {
371
359k
    return this->check_range (base, len, hb_static_size (T));
372
359k
  }
bool hb_sanitize_context_t::check_array<AAT::Entry<void> >(AAT::Entry<void> const*, unsigned int) const
Line
Count
Source
370
87
  {
371
87
    return this->check_range (base, len, hb_static_size (T));
372
87
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::HBGlyphID16>(OT::HBGlyphID16 const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::LigatureEntry<true>::EntryData> >(AAT::Entry<AAT::LigatureEntry<true>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*, unsigned int) const
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
1
  {
371
1
    return this->check_range (base, len, hb_static_size (T));
372
1
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::Entry<AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::Format1Entry<true>::EntryData> >(AAT::Entry<AAT::Format1Entry<true>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::Entry<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, unsigned int, 4u> >(OT::NumType<true, unsigned int, 4u> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >(OT::HBFixed<OT::NumType<true, int, 4u>, 16u> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::TrackTableEntry>(AAT::TrackTableEntry const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::FeatureName>(AAT::FeatureName const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<AAT::SettingName>(AAT::SettingName const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<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<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> const*, unsigned int) const
Line
Count
Source
370
1.74k
  {
371
1.74k
    return this->check_range (base, len, hb_static_size (T));
372
1.74k
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> const*, unsigned int) const
Line
Count
Source
370
7
  {
371
7
    return this->check_range (base, len, hb_static_size (T));
372
7
  }
bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> const*, unsigned int) const
Line
Count
Source
370
31
  {
371
31
    return this->check_range (base, len, hb_static_size (T));
372
31
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::AxisValueRecord>(OT::AxisValueRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::StatAxisRecord>(OT::StatAxisRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::AxisValue, OT::NumType<true, unsigned short, 2u>, void, true> const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::ResourceRecord>(OT::ResourceRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::AxisRecord>(OT::AxisRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::Index>(OT::Index const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::BaseGlyphRecord>(OT::BaseGlyphRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::LayerRecord>(OT::LayerRecord const*, unsigned int) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*, unsigned int) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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
4
  {
371
4
    return this->check_range (base, len, hb_static_size (T));
372
4
  }
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
2
  {
371
2
    return this->check_range (base, len, hb_static_size (T));
372
2
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<unsigned char>(unsigned char const*, unsigned int) const
bool hb_sanitize_context_t::check_array<OT::NameRecord>(OT::NameRecord const*, unsigned int) const
Line
Count
Source
370
29.5k
  {
371
29.5k
    return this->check_range (base, len, hb_static_size (T));
372
29.5k
  }
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::MathValueRecord>(OT::MathValueRecord const*, unsigned int) const
Unexecuted instantiation: 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
373
374
  template <typename T>
375
  bool check_array (const T *base,
376
        unsigned int a,
377
        unsigned int b) const
378
0
  {
379
0
    return this->check_range (base, hb_static_size (T), a, b);
380
0
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_array<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*, unsigned int, unsigned int) const
Unexecuted instantiation: 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
381
382
  bool check_start_recursion (int max_depth)
383
54
  {
384
54
    if (unlikely (recursion_depth >= max_depth)) return false;
385
54
    return ++recursion_depth;
386
54
  }
387
388
  bool end_recursion (bool result)
389
54
  {
390
54
    recursion_depth--;
391
54
    return result;
392
54
  }
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
7.85M
  {
400
7.85M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.85M
    else
403
7.85M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.85M
  }
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
5.26k
  {
400
5.26k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.26k
    else
403
5.26k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.26k
  }
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
7.13k
  {
400
7.13k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7.13k
    else
403
7.13k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7.13k
  }
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
2.12M
  {
400
2.12M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.12M
    else
403
2.12M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.12M
  }
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
206
  {
400
206
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
206
    else
403
206
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
206
  }
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
60
  {
400
60
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60
    else
403
60
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60
  }
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
2.32k
  {
400
2.32k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.32k
    else
403
2.32k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.32k
  }
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
692
  {
400
692
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
692
    else
403
692
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
692
  }
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
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::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
2.23k
  {
400
2.23k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.23k
    else
403
2.23k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.23k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigCaretList<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::LigCaretList<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
692
  {
400
692
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
692
    else
403
692
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
692
  }
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
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::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
49.0k
  {
400
49.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
49.0k
    else
403
49.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
49.0k
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat1>(OT::CaretValueFormat1 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::CaretValueFormat2>(OT::CaretValueFormat2 const*) const
Line
Count
Source
399
2.36k
  {
400
2.36k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.36k
    else
403
2.36k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.36k
  }
bool hb_sanitize_context_t::check_struct<OT::CaretValueFormat3>(OT::CaretValueFormat3 const*) const
Line
Count
Source
399
3.86k
  {
400
3.86k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.86k
    else
403
3.86k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.86k
  }
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
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
  }
bool hb_sanitize_context_t::check_struct<OT::HintingDevice>(OT::HintingDevice const*) const
Line
Count
Source
399
3.25k
  {
400
3.25k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.25k
    else
403
3.25k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.25k
  }
bool hb_sanitize_context_t::check_struct<OT::VariationDevice>(OT::VariationDevice const*) const
Line
Count
Source
399
6
  {
400
6
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6
    else
403
6
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6
  }
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
317
  {
400
317
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
317
    else
403
317
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
317
  }
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
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::ClassDef, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ClassDef, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
1.04k
  {
400
1.04k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.04k
    else
403
1.04k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.04k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::AttachList, OT::NumType<true, unsigned int, 4u>, void, true> 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<OT::LigCaretList<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::LigCaretList<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
280
  {
400
280
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
280
    else
403
280
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
280
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::LigGlyph, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
106
  {
400
106
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
106
    else
403
106
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
106
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MarkGlyphSets, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
265
  {
400
265
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
265
    else
403
265
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
265
  }
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
184
  {
400
184
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
184
    else
403
184
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
184
  }
bool hb_sanitize_context_t::check_struct<OT::ItemVariationStore>(OT::ItemVariationStore const*) const
Line
Count
Source
399
78
  {
400
78
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
78
    else
403
78
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
78
  }
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
34
  {
400
34
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
34
    else
403
34
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
34
  }
bool hb_sanitize_context_t::check_struct<OT::VarRegionList>(OT::VarRegionList const*) const
Line
Count
Source
399
31
  {
400
31
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31
    else
403
31
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31
  }
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
38
  {
400
38
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
38
    else
403
38
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
38
  }
bool hb_sanitize_context_t::check_struct<OT::VarData>(OT::VarData const*) const
Line
Count
Source
399
24
  {
400
24
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
24
    else
403
24
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
24
  }
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
3.30k
  {
400
3.30k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.30k
    else
403
3.30k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.30k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Script> >(OT::Record<OT::Script> const*) const
Line
Count
Source
399
6.19k
  {
400
6.19k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.19k
    else
403
6.19k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.19k
  }
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
6.19k
  {
400
6.19k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
6.19k
    else
403
6.19k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
6.19k
  }
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
39.9k
  {
400
39.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
39.9k
    else
403
39.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
39.9k
  }
bool hb_sanitize_context_t::check_struct<OT::LangSys>(OT::LangSys const*) const
Line
Count
Source
399
35.4k
  {
400
35.4k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
35.4k
    else
403
35.4k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
35.4k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::LangSys> >(OT::Record<OT::LangSys> const*) const
Line
Count
Source
399
35.2k
  {
400
35.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
35.2k
    else
403
35.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
35.2k
  }
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
3.30k
  {
400
3.30k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3.30k
    else
403
3.30k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3.30k
  }
bool hb_sanitize_context_t::check_struct<OT::Record<OT::Feature> >(OT::Record<OT::Feature> const*) const
Line
Count
Source
399
11.1k
  {
400
11.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.1k
    else
403
11.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.1k
  }
bool hb_sanitize_context_t::check_struct<OT::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
11.1k
  {
400
11.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
11.1k
    else
403
11.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
11.1k
  }
bool hb_sanitize_context_t::check_struct<OT::Feature>(OT::Feature const*) const
Line
Count
Source
399
10.1k
  {
400
10.1k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.1k
    else
403
10.1k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.1k
  }
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
10.0k
  {
400
10.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.0k
    else
403
10.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.0k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::FeatureParamsSize>(OT::FeatureParamsSize const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::FeatureParamsStylisticSet>(OT::FeatureParamsStylisticSet const*) const
bool hb_sanitize_context_t::check_struct<OT::FeatureParamsCharacterVariants>(OT::FeatureParamsCharacterVariants const*) const
Line
Count
Source
399
3
  {
400
3
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3
    else
403
3
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3
  }
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
2.16k
  {
400
2.16k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.16k
    else
403
2.16k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.16k
  }
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
15.0k
  {
400
15.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.0k
    else
403
15.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.0k
  }
bool hb_sanitize_context_t::check_struct<OT::Lookup>(OT::Lookup const*) const
Line
Count
Source
399
22.3k
  {
400
22.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
22.3k
    else
403
22.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
22.3k
  }
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
754k
  {
400
754k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
754k
    else
403
754k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
754k
  }
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
260
  {
400
260
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
260
    else
403
260
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
260
  }
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
28
  {
400
28
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
28
    else
403
28
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
28
  }
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
1.65k
  {
400
1.65k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.65k
    else
403
1.65k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.65k
  }
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
1.35k
  {
400
1.35k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.35k
    else
403
1.35k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.35k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::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
742
  {
400
742
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
742
    else
403
742
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
742
  }
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
40
  {
400
40
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
40
    else
403
40
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
40
  }
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
2.98k
  {
400
2.98k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.98k
    else
403
2.98k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.98k
  }
bool hb_sanitize_context_t::check_struct<OT::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
14.5k
  {
400
14.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
14.5k
    else
403
14.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
14.5k
  }
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
107
  {
400
107
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
107
    else
403
107
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
107
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::Ligature<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
584
  {
400
584
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
584
    else
403
584
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
584
  }
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
2.12k
  {
400
2.12k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.12k
    else
403
2.12k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.12k
  }
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
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::Rule<OT::Layout::SmallTypes> >(OT::Rule<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
5.86k
  {
400
5.86k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
5.86k
    else
403
5.86k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
5.86k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
2.89k
  {
400
2.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.89k
    else
403
2.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.89k
  }
bool hb_sanitize_context_t::check_struct<OT::ContextFormat3_6<OT::Layout::SmallTypes> >(OT::ContextFormat3_6<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
125
  {
400
125
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
125
    else
403
125
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
125
  }
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
106
  {
400
106
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
106
    else
403
106
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
106
  }
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
127
  {
400
127
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
127
    else
403
127
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
127
  }
bool hb_sanitize_context_t::check_struct<OT::Rule<OT::Layout::MediumTypes> >(OT::Rule<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
98
  {
400
98
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
98
    else
403
98
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
98
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> 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<OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Rule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
94
  {
400
94
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
94
    else
403
94
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
94
  }
bool hb_sanitize_context_t::check_struct<OT::ContextFormat3_6<OT::Layout::MediumTypes> >(OT::ContextFormat3_6<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
66
  {
400
66
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
66
    else
403
66
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
66
  }
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
367
  {
400
367
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
367
    else
403
367
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
367
  }
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
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::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
1.98M
  {
400
1.98M
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.98M
    else
403
1.98M
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.98M
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
45.3k
  {
400
45.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
45.3k
    else
403
45.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
45.3k
  }
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
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::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
18
  {
400
18
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18
    else
403
18
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainClassRuleSet<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
261
  {
400
261
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
261
    else
403
261
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
261
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ChainRule<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
65
  {
400
65
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
65
    else
403
65
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
65
  }
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
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<OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::RecordListOfScript, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
672
  {
400
672
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
672
    else
403
672
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
672
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::RecordListOf<OT::Feature>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
662
  {
400
662
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
662
    else
403
662
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
662
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
252
  {
400
252
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
252
    else
403
252
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
252
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GSUB_impl::SubstLookup, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
331
  {
400
331
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
331
    else
403
331
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
331
  }
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
106
  {
400
106
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
106
    else
403
106
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
106
  }
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
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::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
341
  {
400
341
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
341
    else
403
341
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
341
  }
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
94
  {
400
94
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
94
    else
403
94
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
94
  }
bool hb_sanitize_context_t::check_struct<OT::ConditionAxisRange>(OT::ConditionAxisRange const*) const
Line
Count
Source
399
1
  {
400
1
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1
    else
403
1
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1
  }
bool hb_sanitize_context_t::check_struct<OT::ConditionValue>(OT::ConditionValue const*) const
Line
Count
Source
399
1
  {
400
1
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1
    else
403
1
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1
  }
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
287
  {
400
287
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
287
    else
403
287
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
287
  }
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
51
  {
400
51
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
51
    else
403
51
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
51
  }
bool hb_sanitize_context_t::check_struct<OT::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
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<OT::FeatureTableSubstitutionRecord>(OT::FeatureTableSubstitutionRecord const*) const
Line
Count
Source
399
19
  {
400
19
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19
    else
403
19
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19
  }
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
19
  {
400
19
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19
    else
403
19
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19
  }
bool hb_sanitize_context_t::check_struct<OT::LookupVariationRecord>(OT::LookupVariationRecord 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::OffsetTo<OT::FeatureLookupsTable, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::FeatureLookupsTable, OT::NumType<true, unsigned int, 4u>, void, true> 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
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::LookupIndexList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::LookupIndexList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, void> >(AAT::StateTable<AAT::ExtendedTypes, void> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VarSizedBinSearchHeader>(OT::VarSizedBinSearchHeader const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::ContextualSubtable<AAT::ExtendedTypes>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::HBGlyphID16> >(AAT::LookupSegmentArray<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::HBGlyphID16> >(AAT::LookupFormat8<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::HBGlyphID16> >(AAT::LookupFormat10<OT::HBGlyphID16> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ExtendedTypes> >(AAT::LigatureSubtable<AAT::ExtendedTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::LigatureEntry<true>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ExtendedTypes> >(AAT::InsertionSubtable<AAT::ExtendedTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::InsertionSubtable<AAT::ExtendedTypes>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ltag>(AAT::ltag const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::FTStringRange>(AAT::FTStringRange const*) const
bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, void> >(AAT::StateTable<AAT::ObsoleteTypes, void> const*) const
Line
Count
Source
399
62
  {
400
62
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
62
    else
403
62
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
62
  }
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
60
  {
400
60
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60
    else
403
60
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60
  }
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
60
  {
400
60
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60
    else
403
60
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::ContextualSubtable<AAT::ObsoleteTypes>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedListOfOffset16To<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::HBGlyphID16>, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LigatureSubtable<AAT::ObsoleteTypes> >(AAT::LigatureSubtable<AAT::ObsoleteTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::InsertionSubtable<AAT::ObsoleteTypes> >(AAT::InsertionSubtable<AAT::ObsoleteTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> >(AAT::StateTable<AAT::ObsoleteTypes, AAT::InsertionSubtable<AAT::ObsoleteTypes>::EntryData> const*) const
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableHeader>(AAT::KerxSubTableHeader const*) const
Line
Count
Source
399
102
  {
400
102
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
102
    else
403
102
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
102
  }
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
3
  {
400
3
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
3
    else
403
3
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
3
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat1<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::Format1Entry<true>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat2<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> >(AAT::StateTable<AAT::ExtendedTypes, AAT::KerxSubTableFormat4<AAT::KerxSubTableHeader>::EntryData> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> >(AAT::KerxSubTableFormat6<AAT::KerxSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<AAT::Lookup<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupSegmentArray<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat8<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > >(AAT::LookupFormat10<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::ankr>(AAT::ankr const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<AAT::Lookup<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSegmentArray<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupSingle<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > >(AAT::LookupFormat8<OT::OffsetTo<OT::ArrayOf<AAT::Anchor, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned short, 2u>, void, false> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NumType<true, short, 2u> >(OT::NumType<true, short, 2u> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NumType<true, int, 4u> >(OT::NumType<true, int, 4u> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::trak>(AAT::trak const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::TrackData, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::TrackData>(AAT::TrackData const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::HBFixed<OT::NumType<true, int, 4u>, 16u> >, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::TrackTableEntry>(AAT::TrackTableEntry const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::NumType<true, short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::feat>(AAT::feat const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::FeatureName>(AAT::FeatureName const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::LONGDATETIME>(OT::LONGDATETIME const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::Common::RangeRecord<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::Common::RangeRecord<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVarRegionAxis, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVarRegionAxis, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVariationRegion, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::TupleList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > >(OT::CFFIndex<OT::NumType<true, unsigned int, 4u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MultiItemVariationStore>(OT::MultiItemVariationStore const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SparseVarRegionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiVarData, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
bool hb_sanitize_context_t::check_struct<OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > >(OT::DeltaSetIndexMapFormat01<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
48
  {
400
48
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
48
    else
403
48
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
48
  }
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
60
  {
400
60
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60
    else
403
60
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60
  }
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
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat1>(OT::Layout::GPOS_impl::AnchorFormat1 const*) const
Line
Count
Source
399
164k
  {
400
164k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
164k
    else
403
164k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
164k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat2>(OT::Layout::GPOS_impl::AnchorFormat2 const*) const
Line
Count
Source
399
230
  {
400
230
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
230
    else
403
230
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
230
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorFormat3>(OT::Layout::GPOS_impl::AnchorFormat3 const*) const
Line
Count
Source
399
172
  {
400
172
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
172
    else
403
172
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
172
  }
Unexecuted instantiation: 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_2<OT::Layout::SmallTypes>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::CursivePosFormat1_2<OT::Layout::SmallTypes>, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::CursivePosFormat1_2<OT::Layout::MediumTypes>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::CursivePosFormat1_2<OT::Layout::MediumTypes>, true> const*) const
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<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, true> const*) const
Line
Count
Source
399
145k
  {
400
145k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
145k
    else
403
145k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
145k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, true> const*) const
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
754k
  {
400
754k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
754k
    else
403
754k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
754k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1_3<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::SinglePosFormat1_3<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
278
  {
400
278
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
278
    else
403
278
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
278
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat2_4<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::SinglePosFormat2_4<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
567
  {
400
567
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
567
    else
403
567
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
567
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::SinglePosFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
7
  {
400
7
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
7
    else
403
7
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
7
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::SinglePosFormat2_4<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::SinglePosFormat2_4<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
19
  {
400
19
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
19
    else
403
19
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
19
  }
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
586
  {
400
586
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
586
    else
403
586
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
586
  }
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
9.79k
  {
400
9.79k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.79k
    else
403
9.79k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.79k
  }
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
9.55k
  {
400
9.55k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9.55k
    else
403
9.55k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9.55k
  }
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
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<OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairPosFormat1_3<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
151
  {
400
151
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
151
    else
403
151
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
151
  }
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
67
  {
400
67
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
67
    else
403
67
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
67
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::PairSet<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
8
  {
400
8
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8
    else
403
8
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8
  }
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
92
  {
400
92
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
92
    else
403
92
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
92
  }
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
1.16k
  {
400
1.16k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.16k
    else
403
1.16k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.16k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
1.53k
  {
400
1.53k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.53k
    else
403
1.53k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.53k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::MarkRecord<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkRecord<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
32.5k
  {
400
32.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
32.5k
    else
403
32.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
32.5k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::MarkArray<OT::Layout::SmallTypes>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned short, 2u>, OT::Layout::GPOS_impl::MarkArray<OT::Layout::SmallTypes>, true> const*) const
Line
Count
Source
399
32.5k
  {
400
32.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
32.5k
    else
403
32.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
32.5k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
2.15k
  {
400
2.15k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.15k
    else
403
2.15k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.15k
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::SmallTypes, OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
1.75k
  {
400
1.75k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.75k
    else
403
1.75k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.75k
  }
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
30
  {
400
30
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30
    else
403
30
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::MarkArray<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> 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<OT::Layout::GPOS_impl::MarkRecord<OT::Layout::MediumTypes> >(OT::Layout::GPOS_impl::MarkRecord<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
111
  {
400
111
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
111
    else
403
111
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
111
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::MarkArray<OT::Layout::MediumTypes>, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::Anchor, OT::NumType<true, unsigned int, 3u>, OT::Layout::GPOS_impl::MarkArray<OT::Layout::MediumTypes>, true> const*) const
Line
Count
Source
399
111
  {
400
111
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
111
    else
403
111
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
111
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
20
  {
400
20
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
20
    else
403
20
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
20
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > >(OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned int, 3u> > const*) const
Line
Count
Source
399
9
  {
400
9
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
9
    else
403
9
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
9
  }
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
242
  {
400
242
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
242
    else
403
242
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
242
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Line
Count
Source
399
189
  {
400
189
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
189
    else
403
189
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
189
  }
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
60
  {
400
60
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
60
    else
403
60
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
60
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::LigatureArray<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
39
  {
400
39
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
39
    else
403
39
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
39
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 3u>, void, true> const*) const
Line
Count
Source
399
495
  {
400
495
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
495
    else
403
495
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
495
  }
bool hb_sanitize_context_t::check_struct<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > >(OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> > 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::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> >(OT::Layout::GPOS_impl::MarkMarkPosFormat1_2<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
135
  {
400
135
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
135
    else
403
135
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
135
  }
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
31
  {
400
31
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31
    else
403
31
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::AnchorMatrix<OT::Layout::MediumTypes, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, true> 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::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> >(OT::ExtensionFormat1<OT::Layout::GPOS_impl::ExtensionPos> const*) const
Line
Count
Source
399
112
  {
400
112
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
112
    else
403
112
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
112
  }
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
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::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
15.0k
  {
400
15.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.0k
    else
403
15.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::List16OfOffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
432
  {
400
432
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
432
    else
403
432
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
432
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::Layout::GPOS_impl::PosLookup, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
151
  {
400
151
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
151
    else
403
151
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
151
  }
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat1>(OT::AxisValueFormat1 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat2>(OT::AxisValueFormat2 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat3>(OT::AxisValueFormat3 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueRecord>(OT::AxisValueRecord const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValueFormat4>(OT::AxisValueFormat4 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::AxisValue>(OT::AxisValue const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::STAT>(OT::STAT const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::StatAxisRecord>, OT::NumType<true, unsigned int, 4u>, void, false> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::OpenTypeOffsetTable>(OT::OpenTypeOffsetTable 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<OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > >(OT::BinSearchHeader<OT::NumType<true, unsigned short, 2u> > const*) const
Line
Count
Source
399
10.7k
  {
400
10.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10.7k
    else
403
10.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10.7k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ResourceForkHeader>(OT::ResourceForkHeader const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ResourceMap>(OT::ResourceMap const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ResourceTypeRecord>(OT::ResourceTypeRecord const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ResourceRecord>(OT::ResourceRecord const*) const
Unexecuted instantiation: 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
bool hb_sanitize_context_t::check_struct<OT::cmap>(OT::cmap const*) const
Line
Count
Source
399
39.3k
  {
400
39.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
39.3k
    else
403
39.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
39.3k
  }
bool hb_sanitize_context_t::check_struct<OT::EncodingRecord>(OT::EncodingRecord const*) const
Line
Count
Source
399
85.0k
  {
400
85.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
85.0k
    else
403
85.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
85.0k
  }
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
85.0k
  {
400
85.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
85.0k
    else
403
85.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
85.0k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat0>(OT::CmapSubtableFormat0 const*) const
Line
Count
Source
399
1.46k
  {
400
1.46k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.46k
    else
403
1.46k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.46k
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat4>(OT::CmapSubtableFormat4 const*) const
Line
Count
Source
399
54.5k
  {
400
54.5k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
54.5k
    else
403
54.5k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
54.5k
  }
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
23.6k
  {
400
23.6k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
23.6k
    else
403
23.6k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
23.6k
  }
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
140
  {
400
140
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
140
    else
403
140
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
140
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat12> const*) const
Line
Count
Source
399
501
  {
400
501
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
501
    else
403
501
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
501
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> >(OT::CmapSubtableLongSegmented<OT::CmapSubtableFormat13> const*) const
Line
Count
Source
399
314
  {
400
314
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
314
    else
403
314
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
314
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14_15<OT::Layout::SmallTypes> >(OT::CmapSubtableFormat14_15<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
310
  {
400
310
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
310
    else
403
310
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
310
  }
bool hb_sanitize_context_t::check_struct<OT::VariationSelectorRecord<OT::Layout::SmallTypes> >(OT::VariationSelectorRecord<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
481
  {
400
481
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
481
    else
403
481
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
481
  }
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
1.13k
  {
400
1.13k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.13k
    else
403
1.13k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.13k
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NonDefaultUVS<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::NonDefaultUVS<OT::Layout::SmallTypes>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
430
  {
400
430
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
430
    else
403
430
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
430
  }
bool hb_sanitize_context_t::check_struct<OT::CmapSubtableFormat14_15<OT::Layout::MediumTypes> >(OT::CmapSubtableFormat14_15<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
286
  {
400
286
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
286
    else
403
286
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
286
  }
bool hb_sanitize_context_t::check_struct<OT::VariationSelectorRecord<OT::Layout::MediumTypes> >(OT::VariationSelectorRecord<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
653
  {
400
653
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
653
    else
403
653
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
653
  }
bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::NonDefaultUVS<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::NonDefaultUVS<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Line
Count
Source
399
612
  {
400
612
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
612
    else
403
612
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
612
  }
bool hb_sanitize_context_t::check_struct<OT::OS2>(OT::OS2 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::OS2V1Tail>(OT::OS2V1Tail const*) const
Line
Count
Source
399
31.0k
  {
400
31.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
31.0k
    else
403
31.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
31.0k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V2Tail>(OT::OS2V2Tail const*) const
Line
Count
Source
399
30.7k
  {
400
30.7k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
30.7k
    else
403
30.7k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
30.7k
  }
bool hb_sanitize_context_t::check_struct<OT::OS2V5Tail>(OT::OS2V5Tail const*) const
Line
Count
Source
399
2.89k
  {
400
2.89k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.89k
    else
403
2.89k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.89k
  }
bool hb_sanitize_context_t::check_struct<OT::head>(OT::head const*) const
Line
Count
Source
399
41.2k
  {
400
41.2k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
41.2k
    else
403
41.2k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
41.2k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::TableRecord>(OT::TableRecord const*) const
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
73
  {
400
73
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
73
    else
403
73
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
73
  }
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
72
  {
400
72
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
72
    else
403
72
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
72
  }
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::Layout::SmallTypes> >(OT::UVSMapping<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::UVSMapping<OT::Layout::MediumTypes> >(OT::UVSMapping<OT::Layout::MediumTypes> const*) const
bool hb_sanitize_context_t::check_struct<OT::fvar>(OT::fvar const*) const
Line
Count
Source
399
4
  {
400
4
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
4
    else
403
4
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
4
  }
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::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
350
  {
400
350
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
350
    else
403
350
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
350
  }
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
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
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CPAL>(OT::CPAL const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CPALV1Tail>(OT::CPALV1Tail const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::COLR>(OT::COLR const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::BaseGlyphPaintRecord>(OT::BaseGlyphPaintRecord const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintColrLayers>(OT::PaintColrLayers const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSolid> >(OT::NoVariable<OT::PaintSolid> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintSolid>(OT::PaintSolid const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSolid> >(OT::Variable<OT::PaintSolid> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintLinearGradient<OT::NoVariable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::NoVariable> >(OT::PaintLinearGradient<OT::NoVariable> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::NoVariable> >(OT::ColorLine<OT::NoVariable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintLinearGradient<OT::Variable> > >(OT::Variable<OT::PaintLinearGradient<OT::Variable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintLinearGradient<OT::Variable> >(OT::PaintLinearGradient<OT::Variable> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ColorLine<OT::Variable> >(OT::ColorLine<OT::Variable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintRadialGradient<OT::NoVariable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::NoVariable> >(OT::PaintRadialGradient<OT::NoVariable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRadialGradient<OT::Variable> > >(OT::Variable<OT::PaintRadialGradient<OT::Variable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintRadialGradient<OT::Variable> >(OT::PaintRadialGradient<OT::Variable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > >(OT::NoVariable<OT::PaintSweepGradient<OT::NoVariable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::NoVariable> >(OT::PaintSweepGradient<OT::NoVariable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSweepGradient<OT::Variable> > >(OT::Variable<OT::PaintSweepGradient<OT::Variable> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintSweepGradient<OT::Variable> >(OT::PaintSweepGradient<OT::Variable> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintGlyph<OT::Layout::SmallTypes> >(OT::PaintGlyph<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintColrGlyph>(OT::PaintColrGlyph const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::NoVariable> >(OT::PaintTransform<OT::NoVariable> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::Affine2x3> >(OT::NoVariable<OT::Affine2x3> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Affine2x3>(OT::Affine2x3 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintTransform<OT::Variable> >(OT::PaintTransform<OT::Variable> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::Affine2x3> >(OT::Variable<OT::Affine2x3> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintTranslate> >(OT::NoVariable<OT::PaintTranslate> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintTranslate>(OT::PaintTranslate const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintTranslate> >(OT::Variable<OT::PaintTranslate> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScale> >(OT::NoVariable<OT::PaintScale> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintScale>(OT::PaintScale const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScale> >(OT::Variable<OT::PaintScale> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleAroundCenter> >(OT::NoVariable<OT::PaintScaleAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintScaleAroundCenter>(OT::PaintScaleAroundCenter const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleAroundCenter> >(OT::Variable<OT::PaintScaleAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniform> >(OT::NoVariable<OT::PaintScaleUniform> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniform>(OT::PaintScaleUniform const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniform> >(OT::Variable<OT::PaintScaleUniform> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintScaleUniformAroundCenter> >(OT::NoVariable<OT::PaintScaleUniformAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintScaleUniformAroundCenter>(OT::PaintScaleUniformAroundCenter const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintScaleUniformAroundCenter> >(OT::Variable<OT::PaintScaleUniformAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotate> >(OT::NoVariable<OT::PaintRotate> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintRotate>(OT::PaintRotate const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotate> >(OT::Variable<OT::PaintRotate> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintRotateAroundCenter> >(OT::NoVariable<OT::PaintRotateAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintRotateAroundCenter>(OT::PaintRotateAroundCenter const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintRotateAroundCenter> >(OT::Variable<OT::PaintRotateAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkew> >(OT::NoVariable<OT::PaintSkew> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintSkew>(OT::PaintSkew const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkew> >(OT::Variable<OT::PaintSkew> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::PaintSkewAroundCenter> >(OT::NoVariable<OT::PaintSkewAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintSkewAroundCenter>(OT::PaintSkewAroundCenter const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::PaintSkewAroundCenter> >(OT::Variable<OT::PaintSkewAroundCenter> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintComposite>(OT::PaintComposite const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::PaintGlyph<OT::Layout::MediumTypes> >(OT::PaintGlyph<OT::Layout::MediumTypes> const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ClipList>(OT::ClipList const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ClipRecord>(OT::ClipRecord const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::ClipBoxFormat1>(OT::ClipBoxFormat1 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ClipBoxFormat1> >(OT::Variable<OT::ClipBoxFormat1> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVG>(OT::SVG const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CBLC>(OT::CBLC const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::BitmapSizeTable>(OT::BitmapSizeTable const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::IndexSubtableRecord>(OT::IndexSubtableRecord const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::IndexSubtableHeader>(OT::IndexSubtableHeader const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SBitLineMetrics>(OT::SBitLineMetrics const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::CBDT>(OT::CBDT const*) const
bool hb_sanitize_context_t::check_struct<OT::sbix>(OT::sbix const*) const
Line
Count
Source
399
59
  {
400
59
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
59
    else
403
59
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
59
  }
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
16
  {
400
16
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
16
    else
403
16
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
16
  }
bool hb_sanitize_context_t::check_struct<OT::SBIXStrike>(OT::SBIXStrike const*) const
Line
Count
Source
399
10
  {
400
10
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10
    else
403
10
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10
  }
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::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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::NoVariable<OT::ColorStop> >(OT::NoVariable<OT::ColorStop> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::Variable<OT::ColorStop> >(OT::Variable<OT::ColorStop> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::SVGDocumentIndexEntry>(OT::SVGDocumentIndexEntry const*) const
bool hb_sanitize_context_t::check_struct<OT::maxpV1Tail>(OT::maxpV1Tail const*) const
Line
Count
Source
399
36.3k
  {
400
36.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
36.3k
    else
403
36.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
36.3k
  }
bool hb_sanitize_context_t::check_struct<OT::maxp_MAXP<OT::Layout::MediumTypes> >(OT::maxp_MAXP<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
13
  {
400
13
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
13
    else
403
13
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
13
  }
bool hb_sanitize_context_t::check_struct<OT::maxp_MAXP<OT::Layout::SmallTypes> >(OT::maxp_MAXP<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
37.0k
  {
400
37.0k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
37.0k
    else
403
37.0k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
37.0k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::_hea<OT::HHEA, OT::Layout::MediumTypes> >(OT::_hea<OT::HHEA, OT::Layout::MediumTypes> const*) const
bool hb_sanitize_context_t::check_struct<OT::_hea<OT::hhea, OT::Layout::SmallTypes> >(OT::_hea<OT::hhea, OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
59.3k
  {
400
59.3k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
59.3k
    else
403
59.3k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
59.3k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::_hea<OT::VHEA, OT::Layout::MediumTypes> >(OT::_hea<OT::VHEA, OT::Layout::MediumTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::_hea<OT::vhea, OT::Layout::SmallTypes> >(OT::_hea<OT::vhea, OT::Layout::SmallTypes> const*) const
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::GVAR, OT::Layout::MediumTypes> >(OT::gvar_GVAR<OT::GVAR, OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
10
  {
400
10
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
10
    else
403
10
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
10
  }
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
2
  {
400
2
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2
    else
403
2
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2
  }
bool hb_sanitize_context_t::check_struct<OT::gvar_GVAR<OT::gvar, OT::Layout::SmallTypes> >(OT::gvar_GVAR<OT::gvar, OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
2
  {
400
2
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2
    else
403
2
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::FDSelect0>(CFF::FDSelect0 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::FDSelect>(CFF::FDSelect const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::Encoding>(CFF::Encoding const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::Charset>(CFF::Charset const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::cff1>(OT::cff1 const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::CFF2FDSelect>(CFF::CFF2FDSelect const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<CFF::CFF2ItemVariationStore>(CFF::CFF2ItemVariationStore const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::cff2>(OT::cff2 const*) const
bool hb_sanitize_context_t::check_struct<OT::KernOTSubTableHeader>(OT::KernOTSubTableHeader const*) const
Line
Count
Source
399
1.32k
  {
400
1.32k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.32k
    else
403
1.32k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.32k
  }
bool hb_sanitize_context_t::check_struct<OT::KernAATSubTableHeader>(OT::KernAATSubTableHeader const*) const
Line
Count
Source
399
206
  {
400
206
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
206
    else
403
206
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
206
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
62
  {
400
62
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
62
    else
403
62
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
62
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
36
  {
400
36
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
36
    else
403
36
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
36
  }
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
121
  {
400
121
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
121
    else
403
121
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
121
  }
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
121
  {
400
121
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
121
    else
403
121
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
121
  }
bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernOTSubTableHeader> >(OT::KernSubTableFormat3<OT::KernOTSubTableHeader> const*) const
Line
Count
Source
399
8
  {
400
8
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
8
    else
403
8
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
8
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat1<OT::KernAATSubTableHeader> const*) const
Line
Count
Source
399
1
  {
400
1
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1
    else
403
1
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1
  }
bool hb_sanitize_context_t::check_struct<AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> >(AAT::KerxSubTableFormat2<OT::KernAATSubTableHeader> const*) const
Line
Count
Source
399
29
  {
400
29
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
29
    else
403
29
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
29
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::KernSubTableFormat3<OT::KernAATSubTableHeader> >(OT::KernSubTableFormat3<OT::KernAATSubTableHeader> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::DataMap>(OT::DataMap const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::meta>(OT::meta const*) const
bool hb_sanitize_context_t::check_struct<OT::NameRecord>(OT::NameRecord const*) const
Line
Count
Source
399
359k
  {
400
359k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
359k
    else
403
359k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
359k
  }
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
359k
  {
400
359k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
359k
    else
403
359k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
359k
  }
bool hb_sanitize_context_t::check_struct<OT::name>(OT::name const*) const
Line
Count
Source
399
18.9k
  {
400
18.9k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
18.9k
    else
403
18.9k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
18.9k
  }
bool hb_sanitize_context_t::check_struct<OT::post>(OT::post const*) const
Line
Count
Source
399
15.8k
  {
400
15.8k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
15.8k
    else
403
15.8k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
15.8k
  }
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::MultiItemVariationStore, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::ConditionList, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::CFFIndex<OT::NumType<true, unsigned int, 4u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VORGFormat1_2<OT::Layout::SmallTypes> >(OT::VORGFormat1_2<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VORGFormat1_2<OT::Layout::MediumTypes> >(OT::VORGFormat1_2<OT::Layout::MediumTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VertOriginMetric<OT::Layout::SmallTypes> >(OT::VertOriginMetric<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::VertOriginMetric<OT::Layout::MediumTypes> >(OT::VertOriginMetric<OT::Layout::MediumTypes> const*) const
bool hb_sanitize_context_t::check_struct<OT::BASE>(OT::BASE const*) const
Line
Count
Source
399
235
  {
400
235
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
235
    else
403
235
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
235
  }
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
268
  {
400
268
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
268
    else
403
268
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
268
  }
bool hb_sanitize_context_t::check_struct<OT::Axis>(OT::Axis const*) const
Line
Count
Source
399
244
  {
400
244
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
244
    else
403
244
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
244
  }
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
237
  {
400
237
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
237
    else
403
237
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
237
  }
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
215
  {
400
215
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
215
    else
403
215
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
215
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScriptList>(OT::BaseScriptList const*) const
Line
Count
Source
399
181
  {
400
181
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
181
    else
403
181
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
181
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScriptRecord>(OT::BaseScriptRecord const*) const
Line
Count
Source
399
1.69k
  {
400
1.69k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.69k
    else
403
1.69k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.69k
  }
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
1.69k
  {
400
1.69k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.69k
    else
403
1.69k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.69k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseScript>(OT::BaseScript const*) const
Line
Count
Source
399
1.00k
  {
400
1.00k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
1.00k
    else
403
1.00k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
1.00k
  }
bool hb_sanitize_context_t::check_struct<OT::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
988
  {
400
988
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
988
    else
403
988
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
988
  }
bool hb_sanitize_context_t::check_struct<OT::BaseValues>(OT::BaseValues const*) const
Line
Count
Source
399
334
  {
400
334
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
334
    else
403
334
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
334
  }
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
2.81k
  {
400
2.81k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.81k
    else
403
2.81k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.81k
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat1>(OT::BaseCoordFormat1 const*) const
Line
Count
Source
399
223
  {
400
223
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
223
    else
403
223
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
223
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2_4<OT::Layout::SmallTypes> >(OT::BaseCoordFormat2_4<OT::Layout::SmallTypes> const*) const
Line
Count
Source
399
190
  {
400
190
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
190
    else
403
190
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
190
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat3>(OT::BaseCoordFormat3 const*) const
Line
Count
Source
399
50
  {
400
50
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
50
    else
403
50
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
50
  }
bool hb_sanitize_context_t::check_struct<OT::BaseCoordFormat2_4<OT::Layout::MediumTypes> >(OT::BaseCoordFormat2_4<OT::Layout::MediumTypes> const*) const
Line
Count
Source
399
23
  {
400
23
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
23
    else
403
23
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
23
  }
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
2.11k
  {
400
2.11k
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
2.11k
    else
403
2.11k
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
2.11k
  }
bool hb_sanitize_context_t::check_struct<OT::MinMax>(OT::MinMax const*) const
Line
Count
Source
399
648
  {
400
648
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
648
    else
403
648
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
648
  }
bool hb_sanitize_context_t::check_struct<OT::FeatMinMaxRecord>(OT::FeatMinMaxRecord const*) const
Line
Count
Source
399
484
  {
400
484
    if (sizeof (uintptr_t) == sizeof (uint32_t))
401
0
      return likely (this->check_range_fast (obj, obj->min_size));
402
484
    else
403
484
      return likely (this->check_point ((const char *) obj + obj->min_size));
404
484
  }
bool hb_sanitize_context_t::check_struct<OT::BaseLangSysRecord>(OT::BaseLangSysRecord 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
  }
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::JstfScriptRecord<OT::Layout::SmallTypes> >(OT::JstfScriptRecord<OT::Layout::SmallTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfScript<OT::Layout::SmallTypes>, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<OT::JstfScript<OT::Layout::SmallTypes>, 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::JstfScriptRecord<OT::Layout::MediumTypes> >(OT::JstfScriptRecord<OT::Layout::MediumTypes> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfScript<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::JstfScript<OT::Layout::MediumTypes>, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID24, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::SortedArrayOf<OT::HBGlyphID24, OT::NumType<true, unsigned short, 2u> >, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned int, 4u>, void, true> >(OT::OffsetTo<OT::JstfLangSys, OT::NumType<true, unsigned int, 4u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::OpticalBounds>(AAT::OpticalBounds const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat0>(AAT::opbdFormat0 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >(OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSegmentArray<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> >(OT::OffsetTo<OT::UnsizedArrayOf<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> >, OT::NumType<true, unsigned short, 2u>, void, false> const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupSingle<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > >(AAT::LookupFormat8<OT::OffsetTo<AAT::OpticalBounds, OT::NumType<true, unsigned short, 2u>, void, true> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbdFormat1>(AAT::opbdFormat1 const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<AAT::opbd>(AAT::opbd const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathConstants>(OT::MathConstants const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathValueRecord>(OT::MathValueRecord const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphInfo>(OT::MathGlyphInfo const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathItalicsCorrectionInfo>(OT::MathItalicsCorrectionInfo const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathTopAccentAttachment>(OT::MathTopAccentAttachment const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathKernInfo>(OT::MathKernInfo const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathKern>(OT::MathKern const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathVariants>(OT::MathVariants const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphConstruction>(OT::MathGlyphConstruction const*) const
Unexecuted instantiation: 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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::MathGlyphAssembly>(OT::MathGlyphAssembly const*) const
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
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::cvar>(OT::cvar const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > >(OT::TupleVariationData<OT::NumType<true, unsigned short, 2u> > const*) const
Unexecuted instantiation: bool hb_sanitize_context_t::check_struct<OT::hdmx>(OT::hdmx const*) const
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
887k
  {
409
887k
    bool sane;
410
411
887k
    init (blob);
412
413
887k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
887k
    start_processing ();
416
417
887k
    if (unlikely (!start))
418
498k
    {
419
498k
      end_processing ();
420
498k
      return blob;
421
498k
    }
422
423
389k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
389k
    sane = t->sanitize (this);
426
427
389k
    end_processing ();
428
429
389k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
389k
    if (sane)
431
339k
    {
432
339k
      hb_blob_make_immutable (blob);
433
339k
      return blob;
434
339k
    }
435
49.7k
    else
436
49.7k
    {
437
49.7k
      hb_blob_destroy (blob);
438
49.7k
      return hb_blob_get_empty ();
439
49.7k
    }
440
389k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
8.31k
    {
419
8.31k
      end_processing ();
420
8.31k
      return blob;
421
8.31k
    }
422
423
713
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
713
    sane = t->sanitize (this);
426
427
713
    end_processing ();
428
429
713
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
713
    if (sane)
431
310
    {
432
310
      hb_blob_make_immutable (blob);
433
310
      return blob;
434
310
    }
435
403
    else
436
403
    {
437
403
      hb_blob_destroy (blob);
438
403
      return hb_blob_get_empty ();
439
403
    }
440
713
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
6.22k
    {
419
6.22k
      end_processing ();
420
6.22k
      return blob;
421
6.22k
    }
422
423
2.80k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.80k
    sane = t->sanitize (this);
426
427
2.80k
    end_processing ();
428
429
2.80k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.80k
    if (sane)
431
796
    {
432
796
      hb_blob_make_immutable (blob);
433
796
      return blob;
434
796
    }
435
2.00k
    else
436
2.00k
    {
437
2.00k
      hb_blob_destroy (blob);
438
2.00k
      return hb_blob_get_empty ();
439
2.00k
    }
440
2.80k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::morx>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
9.02k
    {
419
9.02k
      end_processing ();
420
9.02k
      return blob;
421
9.02k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ltag>(hb_blob_t*)
Line
Count
Source
408
565
  {
409
565
    bool sane;
410
411
565
    init (blob);
412
413
565
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
565
    start_processing ();
416
417
565
    if (unlikely (!start))
418
565
    {
419
565
      end_processing ();
420
565
      return blob;
421
565
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::mort>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
9.02k
    {
419
9.02k
      end_processing ();
420
9.02k
      return blob;
421
9.02k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::kerx>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
8.97k
    {
419
8.97k
      end_processing ();
420
8.97k
      return blob;
421
8.97k
    }
422
423
50
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
50
    sane = t->sanitize (this);
426
427
50
    end_processing ();
428
429
50
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
50
    if (sane)
431
1
    {
432
1
      hb_blob_make_immutable (blob);
433
1
      return blob;
434
1
    }
435
49
    else
436
49
    {
437
49
      hb_blob_destroy (blob);
438
49
      return hb_blob_get_empty ();
439
49
    }
440
50
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::ankr>(hb_blob_t*)
Line
Count
Source
408
1
  {
409
1
    bool sane;
410
411
1
    init (blob);
412
413
1
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
1
    start_processing ();
416
417
1
    if (unlikely (!start))
418
1
    {
419
1
      end_processing ();
420
1
      return blob;
421
1
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::trak>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
9.02k
    {
419
9.02k
      end_processing ();
420
9.02k
      return blob;
421
9.02k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<AAT::feat>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
7.74k
    {
419
7.74k
      end_processing ();
420
7.74k
      return blob;
421
7.74k
    }
422
423
1.28k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1.28k
    sane = t->sanitize (this);
426
427
1.28k
    end_processing ();
428
429
1.28k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1.28k
    if (sane)
431
161
    {
432
161
      hb_blob_make_immutable (blob);
433
161
      return blob;
434
161
    }
435
1.12k
    else
436
1.12k
    {
437
1.12k
      hb_blob_destroy (blob);
438
1.12k
      return hb_blob_get_empty ();
439
1.12k
    }
440
1.28k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT>(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
4
    {
419
4
      end_processing ();
420
4
      return blob;
421
4
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OpenTypeFontFile>(hb_blob_t*)
Line
Count
Source
408
12.7k
  {
409
12.7k
    bool sane;
410
411
12.7k
    init (blob);
412
413
12.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
12.7k
    start_processing ();
416
417
12.7k
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
12.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
12.7k
    sane = t->sanitize (this);
426
427
12.7k
    end_processing ();
428
429
12.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
12.7k
    if (sane)
431
12.5k
    {
432
12.5k
      hb_blob_make_immutable (blob);
433
12.5k
      return blob;
434
12.5k
    }
435
211
    else
436
211
    {
437
211
      hb_blob_destroy (blob);
438
211
      return hb_blob_get_empty ();
439
211
    }
440
12.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap>(hb_blob_t*)
Line
Count
Source
408
99.3k
  {
409
99.3k
    bool sane;
410
411
99.3k
    init (blob);
412
413
99.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
99.3k
    start_processing ();
416
417
99.3k
    if (unlikely (!start))
418
60.0k
    {
419
60.0k
      end_processing ();
420
60.0k
      return blob;
421
60.0k
    }
422
423
39.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
39.3k
    sane = t->sanitize (this);
426
427
39.3k
    end_processing ();
428
429
39.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
39.3k
    if (sane)
431
29.0k
    {
432
29.0k
      hb_blob_make_immutable (blob);
433
29.0k
      return blob;
434
29.0k
    }
435
10.2k
    else
436
10.2k
    {
437
10.2k
      hb_blob_destroy (blob);
438
10.2k
      return hb_blob_get_empty ();
439
10.2k
    }
440
39.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2>(hb_blob_t*)
Line
Count
Source
408
21.6k
  {
409
21.6k
    bool sane;
410
411
21.6k
    init (blob);
412
413
21.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
21.6k
    start_processing ();
416
417
21.6k
    if (unlikely (!start))
418
4.74k
    {
419
4.74k
      end_processing ();
420
4.74k
      return blob;
421
4.74k
    }
422
423
16.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
16.8k
    sane = t->sanitize (this);
426
427
16.8k
    end_processing ();
428
429
16.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
16.8k
    if (sane)
431
15.9k
    {
432
15.9k
      hb_blob_make_immutable (blob);
433
15.9k
      return blob;
434
15.9k
    }
435
912
    else
436
912
    {
437
912
      hb_blob_destroy (blob);
438
912
      return hb_blob_get_empty ();
439
912
    }
440
16.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR>(hb_blob_t*)
Line
Count
Source
408
18.1k
  {
409
18.1k
    bool sane;
410
411
18.1k
    init (blob);
412
413
18.1k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
18.1k
    start_processing ();
416
417
18.1k
    if (unlikely (!start))
418
18.1k
    {
419
18.1k
      end_processing ();
420
18.1k
      return blob;
421
18.1k
    }
422
423
78
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
78
    sane = t->sanitize (this);
426
427
78
    end_processing ();
428
429
78
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
78
    if (sane)
431
26
    {
432
26
      hb_blob_make_immutable (blob);
433
26
      return blob;
434
26
    }
435
52
    else
436
52
    {
437
52
      hb_blob_destroy (blob);
438
52
      return hb_blob_get_empty ();
439
52
    }
440
78
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar>(hb_blob_t*)
Line
Count
Source
408
25.0k
  {
409
25.0k
    bool sane;
410
411
25.0k
    init (blob);
412
413
25.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
25.0k
    start_processing ();
416
417
25.0k
    if (unlikely (!start))
418
25.0k
    {
419
25.0k
      end_processing ();
420
25.0k
      return blob;
421
25.0k
    }
422
423
10
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
10
    sane = t->sanitize (this);
426
427
10
    end_processing ();
428
429
10
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
10
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
10
    else
436
10
    {
437
10
      hb_blob_destroy (blob);
438
10
      return hb_blob_get_empty ();
439
10
    }
440
10
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL>(hb_blob_t*)
Line
Count
Source
408
12
  {
409
12
    bool sane;
410
411
12
    init (blob);
412
413
12
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
12
    start_processing ();
416
417
12
    if (unlikely (!start))
418
12
    {
419
12
      end_processing ();
420
12
      return blob;
421
12
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR>(hb_blob_t*)
Line
Count
Source
408
2.64k
  {
409
2.64k
    bool sane;
410
411
2.64k
    init (blob);
412
413
2.64k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.64k
    start_processing ();
416
417
2.64k
    if (unlikely (!start))
418
2.64k
    {
419
2.64k
      end_processing ();
420
2.64k
      return blob;
421
2.64k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::SVG>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC>(hb_blob_t*)
Line
Count
Source
408
2.64k
  {
409
2.64k
    bool sane;
410
411
2.64k
    init (blob);
412
413
2.64k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.64k
    start_processing ();
416
417
2.64k
    if (unlikely (!start))
418
2.64k
    {
419
2.64k
      end_processing ();
420
2.64k
      return blob;
421
2.64k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBDT>(hb_blob_t*)
Line
Count
Source
408
2.64k
  {
409
2.64k
    bool sane;
410
411
2.64k
    init (blob);
412
413
2.64k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.64k
    start_processing ();
416
417
2.64k
    if (unlikely (!start))
418
2.64k
    {
419
2.64k
      end_processing ();
420
2.64k
      return blob;
421
2.64k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix>(hb_blob_t*)
Line
Count
Source
408
2.64k
  {
409
2.64k
    bool sane;
410
411
2.64k
    init (blob);
412
413
2.64k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.64k
    start_processing ();
416
417
2.64k
    if (unlikely (!start))
418
2.58k
    {
419
2.58k
      end_processing ();
420
2.58k
      return blob;
421
2.58k
    }
422
423
59
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
59
    sane = t->sanitize (this);
426
427
59
    end_processing ();
428
429
59
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
59
    if (sane)
431
13
    {
432
13
      hb_blob_make_immutable (blob);
433
13
      return blob;
434
13
    }
435
46
    else
436
46
    {
437
46
      hb_blob_destroy (blob);
438
46
      return hb_blob_get_empty ();
439
46
    }
440
59
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MAXP>(hb_blob_t*)
Line
Count
Source
408
25.3k
  {
409
25.3k
    bool sane;
410
411
25.3k
    init (blob);
412
413
25.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
25.3k
    start_processing ();
416
417
25.3k
    if (unlikely (!start))
418
25.2k
    {
419
25.2k
      end_processing ();
420
25.2k
      return blob;
421
25.2k
    }
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
9
    {
432
9
      hb_blob_make_immutable (blob);
433
9
      return blob;
434
9
    }
435
4
    else
436
4
    {
437
4
      hb_blob_destroy (blob);
438
4
      return hb_blob_get_empty ();
439
4
    }
440
13
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp>(hb_blob_t*)
Line
Count
Source
408
25.3k
  {
409
25.3k
    bool sane;
410
411
25.3k
    init (blob);
412
413
25.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
25.3k
    start_processing ();
416
417
25.3k
    if (unlikely (!start))
418
2.94k
    {
419
2.94k
      end_processing ();
420
2.94k
      return blob;
421
2.94k
    }
422
423
22.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
22.3k
    sane = t->sanitize (this);
426
427
22.3k
    end_processing ();
428
429
22.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
22.3k
    if (sane)
431
21.6k
    {
432
21.6k
      hb_blob_make_immutable (blob);
433
21.6k
      return blob;
434
21.6k
    }
435
683
    else
436
683
    {
437
683
      hb_blob_destroy (blob);
438
683
      return hb_blob_get_empty ();
439
683
    }
440
22.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HHEA>(hb_blob_t*)
Line
Count
Source
408
30.6k
  {
409
30.6k
    bool sane;
410
411
30.6k
    init (blob);
412
413
30.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
30.6k
    start_processing ();
416
417
30.6k
    if (unlikely (!start))
418
30.6k
    {
419
30.6k
      end_processing ();
420
30.6k
      return blob;
421
30.6k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hhea>(hb_blob_t*)
Line
Count
Source
408
59.9k
  {
409
59.9k
    bool sane;
410
411
59.9k
    init (blob);
412
413
59.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
59.9k
    start_processing ();
416
417
59.9k
    if (unlikely (!start))
418
577
    {
419
577
      end_processing ();
420
577
      return blob;
421
577
    }
422
423
59.3k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
59.3k
    sane = t->sanitize (this);
426
427
59.3k
    end_processing ();
428
429
59.3k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
59.3k
    if (sane)
431
46.6k
    {
432
46.6k
      hb_blob_make_immutable (blob);
433
46.6k
      return blob;
434
46.6k
    }
435
12.7k
    else
436
12.7k
    {
437
12.7k
      hb_blob_destroy (blob);
438
12.7k
      return hb_blob_get_empty ();
439
12.7k
    }
440
59.3k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VHEA>(hb_blob_t*)
Line
Count
Source
408
2.46k
  {
409
2.46k
    bool sane;
410
411
2.46k
    init (blob);
412
413
2.46k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.46k
    start_processing ();
416
417
2.46k
    if (unlikely (!start))
418
2.46k
    {
419
2.46k
      end_processing ();
420
2.46k
      return blob;
421
2.46k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vhea>(hb_blob_t*)
Line
Count
Source
408
2.46k
  {
409
2.46k
    bool sane;
410
411
2.46k
    init (blob);
412
413
2.46k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.46k
    start_processing ();
416
417
2.46k
    if (unlikely (!start))
418
2.46k
    {
419
2.46k
      end_processing ();
420
2.46k
      return blob;
421
2.46k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::HMTX, OT::HHEA, OT::HVAR> >(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
9.02k
    {
419
9.02k
      end_processing ();
420
9.02k
      return blob;
421
9.02k
    }
422
423
1
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
1
    sane = t->sanitize (this);
426
427
1
    end_processing ();
428
429
1
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
1
    if (sane)
431
1
    {
432
1
      hb_blob_make_immutable (blob);
433
1
      return blob;
434
1
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
1
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::hmtx, OT::hhea, OT::HVAR> >(hb_blob_t*)
Line
Count
Source
408
23.7k
  {
409
23.7k
    bool sane;
410
411
23.7k
    init (blob);
412
413
23.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
23.7k
    start_processing ();
416
417
23.7k
    if (unlikely (!start))
418
27
    {
419
27
      end_processing ();
420
27
      return blob;
421
27
    }
422
423
23.6k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
23.6k
    sane = t->sanitize (this);
426
427
23.6k
    end_processing ();
428
429
23.6k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
23.6k
    if (sane)
431
23.6k
    {
432
23.6k
      hb_blob_make_immutable (blob);
433
23.6k
      return blob;
434
23.6k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
23.6k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR>(hb_blob_t*)
Line
Count
Source
408
41.7k
  {
409
41.7k
    bool sane;
410
411
41.7k
    init (blob);
412
413
41.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
41.7k
    start_processing ();
416
417
41.7k
    if (unlikely (!start))
418
41.6k
    {
419
41.6k
      end_processing ();
420
41.6k
      return blob;
421
41.6k
    }
422
423
83
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
83
    sane = t->sanitize (this);
426
427
83
    end_processing ();
428
429
83
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
83
    if (sane)
431
3
    {
432
3
      hb_blob_make_immutable (blob);
433
3
      return blob;
434
3
    }
435
80
    else
436
80
    {
437
80
      hb_blob_destroy (blob);
438
80
      return hb_blob_get_empty ();
439
80
    }
440
83
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::VMTX, OT::VHEA, OT::VVAR> >(hb_blob_t*)
Line
Count
Source
408
2.46k
  {
409
2.46k
    bool sane;
410
411
2.46k
    init (blob);
412
413
2.46k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.46k
    start_processing ();
416
417
2.46k
    if (unlikely (!start))
418
2.45k
    {
419
2.45k
      end_processing ();
420
2.45k
      return blob;
421
2.45k
    }
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
3
    {
432
3
      hb_blob_make_immutable (blob);
433
3
      return blob;
434
3
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
3
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtxvmtx<OT::vmtx, OT::vhea, OT::VVAR> >(hb_blob_t*)
Line
Count
Source
408
2.46k
  {
409
2.46k
    bool sane;
410
411
2.46k
    init (blob);
412
413
2.46k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.46k
    start_processing ();
416
417
2.46k
    if (unlikely (!start))
418
2.46k
    {
419
2.46k
      end_processing ();
420
2.46k
      return blob;
421
2.46k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR>(hb_blob_t*)
Line
Count
Source
408
7.38k
  {
409
7.38k
    bool sane;
410
411
7.38k
    init (blob);
412
413
7.38k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
7.38k
    start_processing ();
416
417
7.38k
    if (unlikely (!start))
418
7.27k
    {
419
7.27k
      end_processing ();
420
7.27k
      return blob;
421
7.27k
    }
422
423
108
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
108
    sane = t->sanitize (this);
426
427
108
    end_processing ();
428
429
108
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
108
    if (sane)
431
6
    {
432
6
      hb_blob_make_immutable (blob);
433
6
      return blob;
434
6
    }
435
102
    else
436
102
    {
437
102
      hb_blob_destroy (blob);
438
102
      return hb_blob_get_empty ();
439
102
    }
440
108
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::GVAR, OT::Layout::MediumTypes> >(hb_blob_t*)
Line
Count
Source
408
2.29k
  {
409
2.29k
    bool sane;
410
411
2.29k
    init (blob);
412
413
2.29k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.29k
    start_processing ();
416
417
2.29k
    if (unlikely (!start))
418
2.28k
    {
419
2.28k
      end_processing ();
420
2.28k
      return blob;
421
2.28k
    }
422
423
10
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
10
    sane = t->sanitize (this);
426
427
10
    end_processing ();
428
429
10
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
10
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
10
    else
436
10
    {
437
10
      hb_blob_destroy (blob);
438
10
      return hb_blob_get_empty ();
439
10
    }
440
10
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar_GVAR<OT::gvar, OT::Layout::SmallTypes> >(hb_blob_t*)
Line
Count
Source
408
2.29k
  {
409
2.29k
    bool sane;
410
411
2.29k
    init (blob);
412
413
2.29k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.29k
    start_processing ();
416
417
2.29k
    if (unlikely (!start))
418
2.28k
    {
419
2.28k
      end_processing ();
420
2.28k
      return blob;
421
2.28k
    }
422
423
2
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2
    sane = t->sanitize (this);
426
427
2
    end_processing ();
428
429
2
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
2
    else
436
2
    {
437
2
      hb_blob_destroy (blob);
438
2
      return hb_blob_get_empty ();
439
2
    }
440
2
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head>(hb_blob_t*)
Line
Count
Source
408
41.5k
  {
409
41.5k
    bool sane;
410
411
41.5k
    init (blob);
412
413
41.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
41.5k
    start_processing ();
416
417
41.5k
    if (unlikely (!start))
418
2.65k
    {
419
2.65k
      end_processing ();
420
2.65k
      return blob;
421
2.65k
    }
422
423
38.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
38.8k
    sane = t->sanitize (this);
426
427
38.8k
    end_processing ();
428
429
38.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
38.8k
    if (sane)
431
29.6k
    {
432
29.6k
      hb_blob_make_immutable (blob);
433
29.6k
      return blob;
434
29.6k
    }
435
9.24k
    else
436
9.24k
    {
437
9.24k
      hb_blob_destroy (blob);
438
9.24k
      return hb_blob_get_empty ();
439
9.24k
    }
440
38.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf>(hb_blob_t*)
Line
Count
Source
408
88.8k
  {
409
88.8k
    bool sane;
410
411
88.8k
    init (blob);
412
413
88.8k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
88.8k
    start_processing ();
416
417
88.8k
    if (unlikely (!start))
418
55.1k
    {
419
55.1k
      end_processing ();
420
55.1k
      return blob;
421
55.1k
    }
422
423
33.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
33.7k
    sane = t->sanitize (this);
426
427
33.7k
    end_processing ();
428
429
33.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
33.7k
    if (sane)
431
33.7k
    {
432
33.7k
      hb_blob_make_immutable (blob);
433
33.7k
      return blob;
434
33.7k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
33.7k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::loca>(hb_blob_t*)
Line
Count
Source
408
88.8k
  {
409
88.8k
    bool sane;
410
411
88.8k
    init (blob);
412
413
88.8k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
88.8k
    start_processing ();
416
417
88.8k
    if (unlikely (!start))
418
52.8k
    {
419
52.8k
      end_processing ();
420
52.8k
      return blob;
421
52.8k
    }
422
423
36.0k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
36.0k
    sane = t->sanitize (this);
426
427
36.0k
    end_processing ();
428
429
36.0k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
36.0k
    if (sane)
431
36.0k
    {
432
36.0k
      hb_blob_make_immutable (blob);
433
36.0k
      return blob;
434
36.0k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
36.0k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff1>(hb_blob_t*)
Line
Count
Source
408
20.3k
  {
409
20.3k
    bool sane;
410
411
20.3k
    init (blob);
412
413
20.3k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
20.3k
    start_processing ();
416
417
20.3k
    if (unlikely (!start))
418
20.3k
    {
419
20.3k
      end_processing ();
420
20.3k
      return blob;
421
20.3k
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cff2>(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
4
    {
419
4
      end_processing ();
420
4
      return blob;
421
4
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::kern>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
8.37k
    {
419
8.37k
      end_processing ();
420
8.37k
      return blob;
421
8.37k
    }
422
423
651
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
651
    sane = t->sanitize (this);
426
427
651
    end_processing ();
428
429
651
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
651
    if (sane)
431
480
    {
432
480
      hb_blob_make_immutable (blob);
433
480
      return blob;
434
480
    }
435
171
    else
436
171
    {
437
171
      hb_blob_destroy (blob);
438
171
      return hb_blob_get_empty ();
439
171
    }
440
651
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::meta>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name>(hb_blob_t*)
Line
Count
Source
408
12.5k
  {
409
12.5k
    bool sane;
410
411
12.5k
    init (blob);
412
413
12.5k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
12.5k
    start_processing ();
416
417
12.5k
    if (unlikely (!start))
418
6.45k
    {
419
6.45k
      end_processing ();
420
6.45k
      return blob;
421
6.45k
    }
422
423
6.10k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
6.10k
    sane = t->sanitize (this);
426
427
6.10k
    end_processing ();
428
429
6.10k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
6.10k
    if (sane)
431
1.64k
    {
432
1.64k
      hb_blob_make_immutable (blob);
433
1.64k
      return blob;
434
1.64k
    }
435
4.45k
    else
436
4.45k
    {
437
4.45k
      hb_blob_destroy (blob);
438
4.45k
      return hb_blob_get_empty ();
439
4.45k
    }
440
6.10k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post>(hb_blob_t*)
Line
Count
Source
408
12.4k
  {
409
12.4k
    bool sane;
410
411
12.4k
    init (blob);
412
413
12.4k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
12.4k
    start_processing ();
416
417
12.4k
    if (unlikely (!start))
418
8.17k
    {
419
8.17k
      end_processing ();
420
8.17k
      return blob;
421
8.17k
    }
422
423
4.30k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
4.30k
    sane = t->sanitize (this);
426
427
4.30k
    end_processing ();
428
429
4.30k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
4.30k
    if (sane)
431
168
    {
432
168
      hb_blob_make_immutable (blob);
433
168
      return blob;
434
168
    }
435
4.13k
    else
436
4.13k
    {
437
4.13k
      hb_blob_destroy (blob);
438
4.13k
      return hb_blob_get_empty ();
439
4.13k
    }
440
4.30k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VARC>(hb_blob_t*)
Line
Count
Source
408
24
  {
409
24
    bool sane;
410
411
24
    init (blob);
412
413
24
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
24
    start_processing ();
416
417
24
    if (unlikely (!start))
418
24
    {
419
24
      end_processing ();
420
24
      return blob;
421
24
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG>(hb_blob_t*)
Line
Count
Source
408
8
  {
409
8
    bool sane;
410
411
8
    init (blob);
412
413
8
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
8
    start_processing ();
416
417
8
    if (unlikely (!start))
418
8
    {
419
8
      end_processing ();
420
8
      return blob;
421
8
    }
422
423
0
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
0
    sane = t->sanitize (this);
426
427
0
    end_processing ();
428
429
0
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
0
    if (sane)
431
0
    {
432
0
      hb_blob_make_immutable (blob);
433
0
      return blob;
434
0
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
0
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::BASE>(hb_blob_t*)
Line
Count
Source
408
9.02k
  {
409
9.02k
    bool sane;
410
411
9.02k
    init (blob);
412
413
9.02k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
9.02k
    start_processing ();
416
417
9.02k
    if (unlikely (!start))
418
8.79k
    {
419
8.79k
      end_processing ();
420
8.79k
      return blob;
421
8.79k
    }
422
423
235
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
235
    sane = t->sanitize (this);
426
427
235
    end_processing ();
428
429
235
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
235
    if (sane)
431
30
    {
432
30
      hb_blob_make_immutable (blob);
433
30
      return blob;
434
30
    }
435
205
    else
436
205
    {
437
205
      hb_blob_destroy (blob);
438
205
      return hb_blob_get_empty ();
439
205
    }
440
235
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MATH>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar>(hb_blob_t*)
Line
Count
Source
408
25.0k
  {
409
25.0k
    bool sane;
410
411
25.0k
    init (blob);
412
413
25.0k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
25.0k
    start_processing ();
416
417
25.0k
    if (unlikely (!start))
418
24.9k
    {
419
24.9k
      end_processing ();
420
24.9k
      return blob;
421
24.9k
    }
422
423
62
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
62
    sane = t->sanitize (this);
426
427
62
    end_processing ();
428
429
62
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
62
    if (sane)
431
5
    {
432
5
      hb_blob_make_immutable (blob);
433
5
      return blob;
434
5
    }
435
57
    else
436
57
    {
437
57
      hb_blob_destroy (blob);
438
57
      return hb_blob_get_empty ();
439
57
    }
440
62
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::head const>(hb_blob_t*)
Line
Count
Source
408
2.39k
  {
409
2.39k
    bool sane;
410
411
2.39k
    init (blob);
412
413
2.39k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
2.39k
    start_processing ();
416
417
2.39k
    if (unlikely (!start))
418
5
    {
419
5
      end_processing ();
420
5
      return blob;
421
5
    }
422
423
2.38k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
2.38k
    sane = t->sanitize (this);
426
427
2.38k
    end_processing ();
428
429
2.38k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
2.38k
    if (sane)
431
1.19k
    {
432
1.19k
      hb_blob_make_immutable (blob);
433
1.19k
      return blob;
434
1.19k
    }
435
1.19k
    else
436
1.19k
    {
437
1.19k
      hb_blob_destroy (blob);
438
1.19k
      return hb_blob_get_empty ();
439
1.19k
    }
440
2.38k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::STAT const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GDEF const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GSUB const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::Layout::GPOS const>(hb_blob_t*)
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*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HVAR const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VVAR const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::gvar const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GVAR const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VARC const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::fvar const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::avar const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cvar const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MVAR const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VORG const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::sbix const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::COLR const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CPAL const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::CBLC const>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::glyf const>(hb_blob_t*)
Line
Count
Source
408
16.8k
  {
409
16.8k
    bool sane;
410
411
16.8k
    init (blob);
412
413
16.8k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
16.8k
    start_processing ();
416
417
16.8k
    if (unlikely (!start))
418
133
    {
419
133
      end_processing ();
420
133
      return blob;
421
133
    }
422
423
16.7k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
16.7k
    sane = t->sanitize (this);
426
427
16.7k
    end_processing ();
428
429
16.7k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
16.7k
    if (sane)
431
16.7k
    {
432
16.7k
      hb_blob_make_immutable (blob);
433
16.7k
      return blob;
434
16.7k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
16.7k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hdmx const>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::name const>(hb_blob_t*)
Line
Count
Source
408
13.9k
  {
409
13.9k
    bool sane;
410
411
13.9k
    init (blob);
412
413
13.9k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
13.9k
    start_processing ();
416
417
13.9k
    if (unlikely (!start))
418
1.14k
    {
419
1.14k
      end_processing ();
420
1.14k
      return blob;
421
1.14k
    }
422
423
12.8k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
12.8k
    sane = t->sanitize (this);
426
427
12.8k
    end_processing ();
428
429
12.8k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
12.8k
    if (sane)
431
12.3k
    {
432
12.3k
      hb_blob_make_immutable (blob);
433
12.3k
      return blob;
434
12.3k
    }
435
534
    else
436
534
    {
437
534
      hb_blob_destroy (blob);
438
534
      return hb_blob_get_empty ();
439
534
    }
440
12.8k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::hmtx const>(hb_blob_t*)
Line
Count
Source
408
14.6k
  {
409
14.6k
    bool sane;
410
411
14.6k
    init (blob);
412
413
14.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
14.6k
    start_processing ();
416
417
14.6k
    if (unlikely (!start))
418
16
    {
419
16
      end_processing ();
420
16
      return blob;
421
16
    }
422
423
14.6k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
14.6k
    sane = t->sanitize (this);
426
427
14.6k
    end_processing ();
428
429
14.6k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
14.6k
    if (sane)
431
14.6k
    {
432
14.6k
      hb_blob_make_immutable (blob);
433
14.6k
      return blob;
434
14.6k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
14.6k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::vmtx const>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::maxp const>(hb_blob_t*)
Line
Count
Source
408
14.6k
  {
409
14.6k
    bool sane;
410
411
14.6k
    init (blob);
412
413
14.6k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
14.6k
    start_processing ();
416
417
14.6k
    if (unlikely (!start))
418
0
    {
419
0
      end_processing ();
420
0
      return blob;
421
0
    }
422
423
14.6k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
14.6k
    sane = t->sanitize (this);
426
427
14.6k
    end_processing ();
428
429
14.6k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
14.6k
    if (sane)
431
14.6k
    {
432
14.6k
      hb_blob_make_immutable (blob);
433
14.6k
      return blob;
434
14.6k
    }
435
0
    else
436
0
    {
437
0
      hb_blob_destroy (blob);
438
0
      return hb_blob_get_empty ();
439
0
    }
440
14.6k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::GLYF const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::HMTX const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::VMTX const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::MAXP const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::cmap const>(hb_blob_t*)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::DMAP const>(hb_blob_t*)
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::OS2 const>(hb_blob_t*)
Line
Count
Source
408
16.7k
  {
409
16.7k
    bool sane;
410
411
16.7k
    init (blob);
412
413
16.7k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
16.7k
    start_processing ();
416
417
16.7k
    if (unlikely (!start))
418
182
    {
419
182
      end_processing ();
420
182
      return blob;
421
182
    }
422
423
16.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
16.5k
    sane = t->sanitize (this);
426
427
16.5k
    end_processing ();
428
429
16.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
16.5k
    if (sane)
431
15.6k
    {
432
15.6k
      hb_blob_make_immutable (blob);
433
15.6k
      return blob;
434
15.6k
    }
435
902
    else
436
902
    {
437
902
      hb_blob_destroy (blob);
438
902
      return hb_blob_get_empty ();
439
902
    }
440
16.5k
  }
hb_blob_t* hb_sanitize_context_t::sanitize_blob<OT::post const>(hb_blob_t*)
Line
Count
Source
408
11.8k
  {
409
11.8k
    bool sane;
410
411
11.8k
    init (blob);
412
413
11.8k
    DEBUG_MSG_FUNC (SANITIZE, start, "start");
414
415
11.8k
    start_processing ();
416
417
11.8k
    if (unlikely (!start))
418
329
    {
419
329
      end_processing ();
420
329
      return blob;
421
329
    }
422
423
11.5k
    Type *t = reinterpret_cast<Type *> (const_cast<char *> (start));
424
425
11.5k
    sane = t->sanitize (this);
426
427
11.5k
    end_processing ();
428
429
11.5k
    DEBUG_MSG_FUNC (SANITIZE, start, sane ? "PASSED" : "FAILED");
430
11.5k
    if (sane)
431
11.3k
    {
432
11.3k
      hb_blob_make_immutable (blob);
433
11.3k
      return blob;
434
11.3k
    }
435
133
    else
436
133
    {
437
133
      hb_blob_destroy (blob);
438
133
      return hb_blob_get_empty ();
439
133
    }
440
11.5k
  }
441
442
  template <typename Type>
443
  hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag)
444
875k
  {
445
875k
    if (!num_glyphs_set)
446
824k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
875k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
875k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::morx>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ltag>(hb_face_t const*, unsigned int)
Line
Count
Source
444
565
  {
445
565
    if (!num_glyphs_set)
446
565
      set_num_glyphs (hb_face_get_glyph_count (face));
447
565
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
565
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::mort>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::kerx>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::ankr>(hb_face_t const*, unsigned int)
Line
Count
Source
444
1
  {
445
1
    if (!num_glyphs_set)
446
1
      set_num_glyphs (hb_face_get_glyph_count (face));
447
1
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
1
  }
hb_blob_t* hb_sanitize_context_t::reference_table<AAT::trak>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<AAT::feat>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT>(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::cmap>(hb_face_t const*, unsigned int)
Line
Count
Source
444
99.3k
  {
445
99.3k
    if (!num_glyphs_set)
446
99.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
99.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
99.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2>(hb_face_t const*, unsigned int)
Line
Count
Source
444
21.6k
  {
445
21.6k
    if (!num_glyphs_set)
446
21.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
21.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
21.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
18.1k
  {
445
18.1k
    if (!num_glyphs_set)
446
18.1k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
18.1k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
18.1k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
25.0k
  {
445
25.0k
    if (!num_glyphs_set)
446
25.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
25.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
25.0k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL>(hb_face_t const*, unsigned int)
Line
Count
Source
444
12
  {
445
12
    if (!num_glyphs_set)
446
12
      set_num_glyphs (hb_face_get_glyph_count (face));
447
12
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
12
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.64k
  {
445
2.64k
    if (!num_glyphs_set)
446
2.64k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.64k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.64k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::SVG>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.64k
  {
445
2.64k
    if (!num_glyphs_set)
446
2.64k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.64k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.64k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBDT>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.64k
  {
445
2.64k
    if (!num_glyphs_set)
446
2.64k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.64k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.64k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.64k
  {
445
2.64k
    if (!num_glyphs_set)
446
2.64k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.64k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.64k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::MAXP>(hb_face_t const*, unsigned int)
Line
Count
Source
444
25.3k
  {
445
25.3k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
25.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
25.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp>(hb_face_t const*, unsigned int)
Line
Count
Source
444
25.3k
  {
445
25.3k
    if (!num_glyphs_set)
446
0
      set_num_glyphs (hb_face_get_glyph_count (face));
447
25.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
25.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HHEA>(hb_face_t const*, unsigned int)
Line
Count
Source
444
30.6k
  {
445
30.6k
    if (!num_glyphs_set)
446
30.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
30.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
30.6k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
59.9k
  {
445
59.9k
    if (!num_glyphs_set)
446
59.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
59.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
59.9k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VHEA>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.46k
  {
445
2.46k
    if (!num_glyphs_set)
446
2.46k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.46k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.46k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::vhea>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.46k
  {
445
2.46k
    if (!num_glyphs_set)
446
2.46k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.46k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.46k
  }
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
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
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
23.7k
  {
445
23.7k
    if (!num_glyphs_set)
446
23.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
23.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
23.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
41.7k
  {
445
41.7k
    if (!num_glyphs_set)
446
41.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
41.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
41.7k
  }
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
2.46k
  {
445
2.46k
    if (!num_glyphs_set)
446
2.46k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.46k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.46k
  }
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
2.46k
  {
445
2.46k
    if (!num_glyphs_set)
446
2.46k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.46k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.46k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR>(hb_face_t const*, unsigned int)
Line
Count
Source
444
7.38k
  {
445
7.38k
    if (!num_glyphs_set)
446
7.38k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
7.38k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
7.38k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::GVAR, OT::Layout::MediumTypes> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.29k
  {
445
2.29k
    if (!num_glyphs_set)
446
2.29k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.29k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.29k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar_GVAR<OT::gvar, OT::Layout::SmallTypes> >(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.29k
  {
445
2.29k
    if (!num_glyphs_set)
446
2.29k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.29k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.29k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head>(hb_face_t const*, unsigned int)
Line
Count
Source
444
41.5k
  {
445
41.5k
    if (!num_glyphs_set)
446
41.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
41.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
41.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf>(hb_face_t const*, unsigned int)
Line
Count
Source
444
88.8k
  {
445
88.8k
    if (!num_glyphs_set)
446
88.8k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
88.8k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
88.8k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::loca>(hb_face_t const*, unsigned int)
Line
Count
Source
444
88.8k
  {
445
88.8k
    if (!num_glyphs_set)
446
88.8k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
88.8k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
88.8k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff1>(hb_face_t const*, unsigned int)
Line
Count
Source
444
20.3k
  {
445
20.3k
    if (!num_glyphs_set)
446
20.3k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
20.3k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
20.3k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::cff2>(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::kern>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::meta>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name>(hb_face_t const*, unsigned int)
Line
Count
Source
444
12.5k
  {
445
12.5k
    if (!num_glyphs_set)
446
12.5k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
12.5k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
12.5k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post>(hb_face_t const*, unsigned int)
Line
Count
Source
444
12.4k
  {
445
12.4k
    if (!num_glyphs_set)
446
12.4k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
12.4k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
12.4k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VARC>(hb_face_t const*, unsigned int)
Line
Count
Source
444
24
  {
445
24
    if (!num_glyphs_set)
446
24
      set_num_glyphs (hb_face_get_glyph_count (face));
447
24
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
24
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG>(hb_face_t const*, unsigned int)
Line
Count
Source
444
8
  {
445
8
    if (!num_glyphs_set)
446
8
      set_num_glyphs (hb_face_get_glyph_count (face));
447
8
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
8
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::BASE>(hb_face_t const*, unsigned int)
Line
Count
Source
444
9.02k
  {
445
9.02k
    if (!num_glyphs_set)
446
9.02k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
9.02k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
9.02k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::MATH>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar>(hb_face_t const*, unsigned int)
Line
Count
Source
444
25.0k
  {
445
25.0k
    if (!num_glyphs_set)
446
25.0k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
25.0k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
25.0k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::head const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
2.39k
  {
445
2.39k
    if (!num_glyphs_set)
446
2.39k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
2.39k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
2.39k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::STAT const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::GDEF const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GSUB const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::Layout::GPOS const>(hb_face_t const*, unsigned int)
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)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::HVAR const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VVAR const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::gvar const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::GVAR const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VARC const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::fvar const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::avar const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::cvar const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::MVAR const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VORG const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::sbix const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::COLR const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::CPAL const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::CBLC const>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::glyf const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
16.8k
  {
445
16.8k
    if (!num_glyphs_set)
446
16.8k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
16.8k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
16.8k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::hdmx const>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::name const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
13.9k
  {
445
13.9k
    if (!num_glyphs_set)
446
13.9k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
13.9k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
13.9k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::hmtx const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
14.6k
  {
445
14.6k
    if (!num_glyphs_set)
446
14.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
14.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
14.6k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::vmtx const>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::maxp const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
14.6k
  {
445
14.6k
    if (!num_glyphs_set)
446
14.6k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
14.6k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
14.6k
  }
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::GLYF const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::HMTX const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::VMTX const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::MAXP const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::cmap const>(hb_face_t const*, unsigned int)
Unexecuted instantiation: hb_blob_t* hb_sanitize_context_t::reference_table<OT::DMAP const>(hb_face_t const*, unsigned int)
hb_blob_t* hb_sanitize_context_t::reference_table<OT::OS2 const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
16.7k
  {
445
16.7k
    if (!num_glyphs_set)
446
16.7k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
16.7k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
16.7k
  }
hb_blob_t* hb_sanitize_context_t::reference_table<OT::post const>(hb_face_t const*, unsigned int)
Line
Count
Source
444
11.8k
  {
445
11.8k
    if (!num_glyphs_set)
446
11.8k
      set_num_glyphs (hb_face_get_glyph_count (face));
447
11.8k
    return sanitize_blob<Type> (hb_face_reference_table (face, tableTag));
448
11.8k
  }
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
3.45M
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
3.45M
  { 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
51
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
51
  { 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.45M
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
3.45M
  { 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
106
  hb_sanitize_with_object_t (hb_sanitize_context_t *c, const T& obj) : c (c)
467
106
  { c->set_object (obj); }
468
  ~hb_sanitize_with_object_t ()
469
3.45M
  { c->reset_object (); }
470
471
  private:
472
  hb_sanitize_context_t *c;
473
};
474
475
476
#endif /* HB_SANITIZE_HH */