src/hb-dsalgs.hh | 7 ++++--- src/hb-ot-layout.cc | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-)
New commits: commit fee0f41c6c1e50621d10b07802ca36a9b295b53d Author: Behdad Esfahbod <[email protected]> Date: Tue Aug 28 18:27:41 2018 -0700 Don't declare extern symbols as inline clang -O3 was completely removing _get_gdef(), causing link failure when needed from another compilation unit. Surprisingly, "extern inline" didn't fix it. diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 8b247704..34507891 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -56,7 +56,7 @@ // return *(data->base.get ()); // } -inline const OT::GDEF& _get_gdef (hb_face_t *face) +const OT::GDEF& _get_gdef (hb_face_t *face) { if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GDEF); return *hb_ot_face_data (face)->GDEF->table; @@ -71,7 +71,7 @@ static inline const OT::GSUB& _get_gsub (hb_face_t *face) if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GSUB); return *hb_ot_face_data (face)->GSUB->table; } -inline const OT::GSUB& _get_gsub_relaxed (hb_face_t *face) +const OT::GSUB& _get_gsub_relaxed (hb_face_t *face) { return *hb_ot_face_data (face)->GSUB.get_relaxed ()->table; } @@ -85,7 +85,7 @@ static inline const OT::GPOS& _get_gpos (hb_face_t *face) if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GPOS); return *hb_ot_face_data (face)->GPOS->table; } -inline const OT::GPOS& _get_gpos_relaxed (hb_face_t *face) +const OT::GPOS& _get_gpos_relaxed (hb_face_t *face) { return *hb_ot_face_data (face)->GPOS.get_relaxed ()->table; } commit 967741e4c468ebf0a40f91934ed1923506099806 Author: Behdad Esfahbod <[email protected]> Date: Tue Aug 28 18:18:02 2018 -0700 Add explicit to hb_auto_t 1param constructors diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh index 8c910748..7e06ff17 100644 --- a/src/hb-dsalgs.hh +++ b/src/hb-dsalgs.hh @@ -497,9 +497,10 @@ struct hb_auto_t : Type * * Apparently if we template for all types, then gcc seems to * capture a reference argument in the type, but clang doesn't, - * causing unwanted copies and bugs that come with it. */ - template <typename T1> hb_auto_t (T1 *t1) { Type::init (t1); } - template <typename T1> hb_auto_t (T1 &t1) { Type::init (t1); } + * causing unwanted copies and bugs that come with it. Ideally + * we should use C++11-style rvalue reference &&t1. */ + template <typename T1> explicit hb_auto_t (T1 *t1) { Type::init (t1); } + template <typename T1> explicit hb_auto_t (T1 &t1) { Type::init (t1); } ~hb_auto_t (void) { Type::fini (); } private: /* Hide */ void init (void) {} _______________________________________________ HarfBuzz mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/harfbuzz
