Files
glib/glib
Philip Withnall 45da15a50c gatomic: Add a C++ variant of g_atomic_int_compare_and_exchange()
The C++ variant implements type safety differently, to avoid warnings
from C++ compilers about:
```
../../../gnome-commander-1.14.2/src/intviewer/searcher.cc:303:5: error: cannot initialize a parameter of type 'gint *' (aka 'int *') with an rvalue of type 'void *'
    g_atomic_int_compare_and_exchange ((gint*)&src->priv->progress_value, oldval, (gint)d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/b/yoe/master/build/tmp/work/cortexa72-yoe-linux/gnome-commander/1.14.2-r0/recipe-sysroot/usr/include/glib-2.0/glib/gatomic.h:160:44: note: expanded from macro 'g_atomic_int_compare_and_exchange'
    __atomic_compare_exchange_n ((atomic), (void *) (&(gaicae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
```

This complements the existing C++ variant for
`g_atomic_pointer_compare_and_exchange()`, and fixes a regression on C++
from https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2114.

With the addition of the unit tests in the previous commit, this is
effectively tested by the FreeBSD and macOS CI jobs, as they use
`clang++` in C++ mode. `g++` doesn’t seem to emit a warning about this.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #2625
2022-04-06 12:34:53 +01:00
..
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2019-05-27 17:51:40 +00:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2020-06-23 10:49:44 +01:00
2017-05-24 11:58:19 +02:00
2021-07-29 10:09:27 -04:00
2017-05-24 11:58:19 +02:00
2021-05-28 17:15:46 +02:00
2017-05-24 11:58:19 +02:00
2022-01-18 22:19:55 +01:00
2022-01-18 22:19:55 +01:00
2021-11-26 12:24:23 +00:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2020-11-17 15:50:07 +00:00
2022-02-01 17:09:14 -08:00
2018-01-04 22:19:30 +01:00
2019-11-25 13:09:25 +01:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2022-02-11 14:44:09 +00:00
2021-09-21 09:41:29 +00:00
2021-11-18 14:32:09 +00:00
2017-05-24 11:58:19 +02:00
2019-03-15 21:30:22 +01:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2021-07-21 13:49:48 +02:00
2021-09-21 09:41:29 +00:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00
2019-11-25 13:09:25 +01:00
2017-05-24 11:58:19 +02:00
2021-12-24 20:11:39 +00:00
2020-05-12 12:41:22 +01:00
2021-03-23 11:36:57 +00:00
2021-03-23 11:36:57 +00:00
2017-05-24 11:58:19 +02:00
2021-09-21 09:41:29 +00:00
2021-09-21 09:41:29 +00:00
2017-05-24 11:58:19 +02:00
2021-09-21 09:41:29 +00:00
2021-11-22 12:22:54 +00:00
2021-12-24 20:11:39 +00:00
2021-08-02 14:52:06 +01:00
2017-05-24 11:58:19 +02:00
2017-05-24 11:58:19 +02:00