• Wan-Teh Chang's avatar
    compat/atomics: add typecasts in atomic_compare_exchange_strong() · 6a93b596
    Wan-Teh Chang authored
    The Solaris and Windows emulations of atomic_compare_exchange_strong()
    need typecasts to avoid compiler warnings, because the functions they
    call expect a void* pointer but an intptr_t integer is passed.
    
    Note that the emulations of atomic_compare_exchange_strong() (except
    the gcc version) only work for atomic_intptr_t because of the type of
    the second argument (|expected|). See
    http://en.cppreference.com/w/c/atomic:
    
    _Bool atomic_compare_exchange_strong( volatile A* obj,
                                          C* expected, C desired );
    
    The types of the first argument and second argument are different
    (|A| and |C|, respectively). |C| is the non-atomic type corresponding
    to |A|. In the emulations of atomic_compare_exchange_strong(), |C| is
    intptr_t. This implies |A| can only be sig_intptr_t.
    Signed-off-by: 's avatarWan-Teh Chang <wtc@google.com>
    6a93b596
stdatomic.h 5.54 KB