[HarfBuzz] compilation error of 0.9.26 with MinGW

Behdad Esfahbod behdad at behdad.org
Wed Feb 5 14:23:00 CET 2014


Thanks.  I pushed a similar change out that should fix.  Please test.

On 14-02-05 02:33 AM, Werner LEMBERG wrote:
> 
>>> hb-common.cc: In function 'hb_language_item_t* lang_find_or_insert(const char*)':
>>> hb-atomic-private.hh:61:47: error: expected primary-expression before ')' token
>>>  #define hb_atomic_ptr_get(P)  (MemoryBarrier (), (void *) *(P))
>>
>> Interesting.  Can you try the attached patch?  Looks like a MinGW
>> bug to me.
> 
> It seems to be a bug in MinGW, see
> 
>   https://sourceforge.net/p/mingw/bugs/2131/
>   https://sourceforge.net/p/mingw/bugs/2181/
> 
> Maybe you can add comments there, if necessary.
> 
> Applying the recommended fix from those two bug reports, however,
> fails for me; macro expansion then reduces
> 
>   hb_language_item_t *first_lang =
>     (hb_language_item_t *) hb_atomic_ptr_get (&langs);
> 
> to
> 
>   hb_language_item_t *first_lang =
>     (hb_language_item_t *) (, (void *)&langs)
> 
> which the compiler still doesn't like.
> 
> Running MinGW natively on a Win7 box, I admit that I have no idea why
> MinGW expands to the fallback macro, which is empty – maybe you have
> to explicitly define the Windows version (via the _WIN32_WINNT macro)
> to be something equal to or newer than Vista?  On the other hand, I
> think that the original HarfBuzz code isn't correct either, since it
> relies on the fact that `MemoryBarrier' always expands to a function
> call, which is obviously not true.
> 
> The good news: Your patch works :-)  To avoid warnings, you should
> insert
> 
>   # undef MemoryBarrier
> 
> before (re)defining `MemoryBarrier'.
> 
> 
>     Werner
> 

-- 
behdad
http://behdad.org/


More information about the HarfBuzz mailing list