[OT] Really fix possible NULL dereference this time
This commit is contained in:
parent
2941683358
commit
a5ddd9e31c
|
@ -86,13 +86,13 @@ struct hb_would_apply_context_t
|
||||||
const hb_codepoint_t *glyphs_,
|
const hb_codepoint_t *glyphs_,
|
||||||
unsigned int len_,
|
unsigned int len_,
|
||||||
bool zero_context_,
|
bool zero_context_,
|
||||||
const hb_set_digest_t *digest_
|
const hb_set_digest_t &digest_
|
||||||
) :
|
) :
|
||||||
face (face_),
|
face (face_),
|
||||||
glyphs (glyphs_),
|
glyphs (glyphs_),
|
||||||
len (len_),
|
len (len_),
|
||||||
zero_context (zero_context_),
|
zero_context (zero_context_),
|
||||||
digest (digest_ ? *digest_ : hb_set_digest_t()),
|
digest (digest_),
|
||||||
debug_depth (0) {};
|
debug_depth (0) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ struct hb_apply_context_t
|
||||||
hb_apply_context_t (hb_font_t *font_,
|
hb_apply_context_t (hb_font_t *font_,
|
||||||
hb_buffer_t *buffer_,
|
hb_buffer_t *buffer_,
|
||||||
hb_mask_t lookup_mask_,
|
hb_mask_t lookup_mask_,
|
||||||
const hb_set_digest_t *digest_) :
|
const hb_set_digest_t &digest_) :
|
||||||
font (font_), face (font->face), buffer (buffer_),
|
font (font_), face (font->face), buffer (buffer_),
|
||||||
direction (buffer_->props.direction),
|
direction (buffer_->props.direction),
|
||||||
lookup_mask (lookup_mask_),
|
lookup_mask (lookup_mask_),
|
||||||
|
@ -132,7 +132,7 @@ struct hb_apply_context_t
|
||||||
lookup_props (0), property (0), debug_depth (0),
|
lookup_props (0), property (0), debug_depth (0),
|
||||||
gdef (*hb_ot_layout_from_face (face)->gdef),
|
gdef (*hb_ot_layout_from_face (face)->gdef),
|
||||||
has_glyph_classes (gdef.has_glyph_classes ()),
|
has_glyph_classes (gdef.has_glyph_classes ()),
|
||||||
digest (*digest_) {}
|
digest (digest_) {}
|
||||||
|
|
||||||
void set_lookup_props (unsigned int lookup_props_) {
|
void set_lookup_props (unsigned int lookup_props_) {
|
||||||
lookup_props = lookup_props_;
|
lookup_props = lookup_props_;
|
||||||
|
|
|
@ -417,7 +417,7 @@ hb_ot_layout_would_substitute_lookup_fast (hb_face_t *face,
|
||||||
hb_bool_t zero_context)
|
hb_bool_t zero_context)
|
||||||
{
|
{
|
||||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (face)->gsub_lookup_count)) return false;
|
if (unlikely (lookup_index >= hb_ot_layout_from_face (face)->gsub_lookup_count)) return false;
|
||||||
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
|
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
|
||||||
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
|
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ hb_ot_layout_substitute_lookup (hb_font_t *font,
|
||||||
hb_mask_t mask)
|
hb_mask_t mask)
|
||||||
{
|
{
|
||||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gsub_lookup_count)) return false;
|
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gsub_lookup_count)) return false;
|
||||||
OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
|
OT::hb_apply_context_t c (font, buffer, mask, hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
|
||||||
return hb_ot_layout_from_face (font->face)->gsub->substitute_lookup (&c, lookup_index);
|
return hb_ot_layout_from_face (font->face)->gsub->substitute_lookup (&c, lookup_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -476,7 +476,7 @@ hb_ot_layout_position_lookup (hb_font_t *font,
|
||||||
hb_mask_t mask)
|
hb_mask_t mask)
|
||||||
{
|
{
|
||||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gpos_lookup_count)) return false;
|
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gpos_lookup_count)) return false;
|
||||||
OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
|
OT::hb_apply_context_t c (font, buffer, mask, hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
|
||||||
return hb_ot_layout_from_face (font->face)->gpos->position_lookup (&c, lookup_index);
|
return hb_ot_layout_from_face (font->face)->gpos->position_lookup (&c, lookup_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,9 @@ arabic_fallback_shape (hb_font_t *font, hb_buffer_t *buffer)
|
||||||
buffer->info[i].codepoint = shaped;
|
buffer->info[i].codepoint = shaped;
|
||||||
}
|
}
|
||||||
|
|
||||||
OT::hb_apply_context_t c (font, buffer, 1/*global mask*/, NULL);
|
hb_set_digest_t digest;
|
||||||
|
digest.init ();
|
||||||
|
OT::hb_apply_context_t c (font, buffer, 1/*global mask*/, digest);
|
||||||
c.set_lookup_props (OT::LookupFlag::IgnoreMarks);
|
c.set_lookup_props (OT::LookupFlag::IgnoreMarks);
|
||||||
|
|
||||||
/* Mandatory ligatures */
|
/* Mandatory ligatures */
|
||||||
|
|
Loading…
Reference in New Issue