One more visibility trick

Should fix Windows build again.
This commit is contained in:
Behdad Esfahbod 2018-07-23 13:24:26 -07:00
parent e57a638bde
commit e22a48ac95
3 changed files with 14 additions and 19 deletions

View File

@ -1069,3 +1069,12 @@ hb_variation_to_string (hb_variation_t *variation,
memcpy (buf, s, len);
buf[len] = '\0';
}
/* If there is no visibility control, then hb-static.cc will NOT
* define anything. Instead, we get it to define one set in here
* only, so only libharfbuzz.so defines them, not other libs. */
#ifdef HB_NO_VISIBILITY
#undef HB_NO_VISIBILITY
#include "hb-static.cc"
#define HB_NO_VISIBILITY 1
#endif

View File

@ -375,16 +375,8 @@ typedef uint64_t hb_vector_size_impl_t;
#define HB_NULL_POOL_SIZE 264
#ifdef HB_NO_VISIBILITY
static
#else
extern HB_INTERNAL
#endif
hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)]
#ifdef HB_NO_VISIBILITY
= {}
#endif
;
hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)];
/* Generic nul-content Null objects. */
template <typename Type>
@ -413,16 +405,8 @@ static_assert (Namespace::Type::min_size + 1 <= sizeof (_Null##Type), "Null pool
* for correct operation. It only exist to catch and divert program logic bugs instead of
* causing bad memory access. So, races there are not actually introducing incorrectness
* in the code. Has ~12kb binary size overhead to have it, also clang build fails with it. */
#ifdef HB_NO_VISIBILITY
static
#else
extern HB_INTERNAL
#endif
/*thread_local*/ hb_vector_size_impl_t _hb_CrapPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)]
#ifdef HB_NO_VISIBILITY
= {}
#endif
;
/*thread_local*/ hb_vector_size_impl_t _hb_CrapPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)];
/* CRAP pool: Common Region for Access Protection. */
template <typename Type>

View File

@ -31,9 +31,9 @@
#include "hb-ot-maxp-table.hh"
#ifndef HB_NO_VISIBILITY
hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] = {};
/*thread_local*/ hb_vector_size_impl_t _hb_CrapPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] = {};
#endif
void
hb_face_t::load_num_glyphs (void) const
@ -52,3 +52,5 @@ hb_face_t::load_upem (void) const
upem = head_table->get_upem ();
hb_blob_destroy (head_blob);
}
#endif