[HarfBuzz] compilation problem in hb-set-private.hh
Jonathan Kew
jfkthame at googlemail.com
Sat May 5 05:49:45 PDT 2012
With current hbng master, I'm hitting a compilation failure with GCC
4.2.1, as it doesn't like the last STATIC_ASSERT here:
CXX libharfbuzz_la-hb-set.lo
In file included from ../../src/hb-set.cc:27:
../../src/hb-set-private.hh:131: error: invalid use of non-static data
member '_hb_set_t::elts'
../../src/hb-set-private.hh:134: error: from this location
Using clang instead still fails at the same place:
In file included from ../../src/hb-set.cc:27:
../../src/hb-set-private.hh:134:26: error: invalid use of nonstatic data
member 'elts'
ASSERT_STATIC (sizeof (elts) * 8 > MAX_G);
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
../../src/hb-private.hh:89:58: note: expanded from macro 'ASSERT_STATIC'
#define ASSERT_STATIC(_cond) _ASSERT_STATIC0 (__LINE__, (_cond))
^
../../src/hb-private.hh:88:64: note: expanded from macro '_ASSERT_STATIC0'
#define _ASSERT_STATIC0(_line, _cond) _ASSERT_STATIC1 (_line, (_cond))
^
../../src/hb-private.hh:87:92: note: expanded from macro '_ASSERT_STATIC1'
#define _ASSERT_STATIC1(_line, _cond) typedef int
_static_assert_on_line_##_line##_failed[(_cond)?1:-1]
^~~~~
I suppose you could change the STATIC_ASSERT to something like
ASSERT_STATIC (sizeof (elt_t) * ELTS * 8 > MAX_G);
and that would avoid the failure.
BTW, clang also reports a warning in main.cc:
../../src/main.cc:129:52: warning: data argument not used by format
string [-Wformat-extra-args]
: " Language System %2d of %2d: %.4s\n",
n_langsys, num_langsys,
^
This is harmless - it refers to the case where n_langsys == -1, so that
the format string without placeholders is used - but maybe it'd be worth
rewriting this using if-else to get a warning-free compilation.
JK
More information about the HarfBuzz
mailing list