From a5ddd9e31cd7906c4b559aa5b2fafdae4b9c8935 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 4 Sep 2012 14:55:00 -0400 Subject: [PATCH] [OT] Really fix possible NULL dereference this time --- src/hb-ot-layout-gsubgpos-private.hh | 8 ++++---- src/hb-ot-layout.cc | 6 +++--- src/hb-ot-shape-complex-arabic.cc | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh index 40d5c57f3..baf0cb3ec 100644 --- a/src/hb-ot-layout-gsubgpos-private.hh +++ b/src/hb-ot-layout-gsubgpos-private.hh @@ -86,13 +86,13 @@ struct hb_would_apply_context_t const hb_codepoint_t *glyphs_, unsigned int len_, bool zero_context_, - const hb_set_digest_t *digest_ + const hb_set_digest_t &digest_ ) : face (face_), glyphs (glyphs_), len (len_), zero_context (zero_context_), - digest (digest_ ? *digest_ : hb_set_digest_t()), + digest (digest_), debug_depth (0) {}; }; @@ -124,7 +124,7 @@ struct hb_apply_context_t hb_apply_context_t (hb_font_t *font_, hb_buffer_t *buffer_, hb_mask_t lookup_mask_, - const hb_set_digest_t *digest_) : + const hb_set_digest_t &digest_) : font (font_), face (font->face), buffer (buffer_), direction (buffer_->props.direction), lookup_mask (lookup_mask_), @@ -132,7 +132,7 @@ struct hb_apply_context_t lookup_props (0), property (0), debug_depth (0), gdef (*hb_ot_layout_from_face (face)->gdef), has_glyph_classes (gdef.has_glyph_classes ()), - digest (*digest_) {} + digest (digest_) {} void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index a319959d5..3ea63421c 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -417,7 +417,7 @@ hb_ot_layout_would_substitute_lookup_fast (hb_face_t *face, hb_bool_t zero_context) { 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); } @@ -434,7 +434,7 @@ hb_ot_layout_substitute_lookup (hb_font_t *font, hb_mask_t mask) { 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); } @@ -476,7 +476,7 @@ hb_ot_layout_position_lookup (hb_font_t *font, hb_mask_t mask) { 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); } diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc index 965947a54..fed39c67f 100644 --- a/src/hb-ot-shape-complex-arabic.cc +++ b/src/hb-ot-shape-complex-arabic.cc @@ -246,7 +246,9 @@ arabic_fallback_shape (hb_font_t *font, hb_buffer_t *buffer) 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); /* Mandatory ligatures */