Fix incompatible pointer types for GtkItemFactoryCallbacks on gcc-14
Review Request #3282 — Created July 6, 2024 and submitted
The GtkItemFactoryEntry struct callback is of type GtkItemFactoryCallbacks
(aka void ()(void)) but is initialised with GtkItemFactoryCallback1 types
(aka void ()(void , guint, GtkWidget )).This is coherent with the gtk-2 documentation:
gtk_item_factory_create_items(..., GtkItemFactoryEntry *entries,...)
entries : an array of GtkItemFactoryEntrys whose callback members must by of
type GtkItemFactoryCallback1But, under gcc-14, the implicit cast from GtkItemFactoryCallback1 to
GtkItemFactoryCallback triggers an incompatible-pointer-types error (See [gcc-doc]).An exemple of this error:
pidgin/gtkconv.c:3096:66: error: initialization of 'void (*)(void)' from incompatible pointer type 'void (*)(void *, guint, GtkWidget *)' {aka 'void (*)(void *, unsigned int, struct _GtkWidget *)'} [-Wincompatible-pointer-types] 3096 | { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, | ^~~~~~~~~~~~~~~~ pidgin/gtkconv.c:3096:66: note: (near initialization for 'menu_items[1].callback')
To fix this, explicitely cast to GtkItemFactoryCallback where needed.
Built with gcc-14, started and clicked on some affected menus
Summary | ID |
---|---|
06721b86a5a8e6fb8163d9411a7778d2a0274b26 |
Description | From | Last Updated |
---|---|---|
I've found a system where the const is a legitimate part of the type... I need to investiguate... |
yoann.congal@smile.fr |
- Change Summary:
-
Removed xmlSAXHandler.serror related patch
- Commits:
-
Summary ID 06721b86a5a8e6fb8163d9411a7778d2a0274b26 7b20c9a5df89b2c99921fa0c68b3754049e98d36 06721b86a5a8e6fb8163d9411a7778d2a0274b26 - Diff:
-
Revision 2 (+66 -66)
- Change Summary:
-
Focus the review only on the GtkItemFactoryEntry part
- Summary:
-
Fix incompatible pointer types on gcc-14Fix incompatible pointer types for GtkItemFactoryCallbacks on gcc-14
- Description:
-
~ Fix incompatible-pointer-types errors on gcc-14(see gcc doc) for: GtkItemFactoryEntry/GtkItemFactoryCallbacks and xmlSAXHandler.serror/xmlStructuredErrorFunc
~ The GtkItemFactoryEntry struct callback is of type GtkItemFactoryCallbacks
+ (aka void ()(void)) but is initialised with GtkItemFactoryCallback1 types + (aka void ()(void , guint, GtkWidget )). ~ See individual commits for details.
~ This is coherent with the gtk-2 documentation:
+ + gtk_item_factory_create_items(..., GtkItemFactoryEntry *entries,...)
entries : an array of GtkItemFactoryEntrys whose callback members must by of
type GtkItemFactoryCallback1+ + But, under gcc-14, the implicit cast from GtkItemFactoryCallback1 to
+ GtkItemFactoryCallback triggers an incompatible-pointer-types error (See [gcc-doc]). + + An exemple of this error:
+ + pidgin/gtkconv.c:3096:66: error: initialization of 'void (*)(void)' from incompatible pointer type 'void (*)(void *, guint, GtkWidget *)' {aka 'void (*)(void *, unsigned int, struct _GtkWidget *)'} [-Wincompatible-pointer-types]
+ 3096 | { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
+ | ^~~~~~~~~~~~~~~~
+ pidgin/gtkconv.c:3096:66: note: (near initialization for 'menu_items[1].callback')
+ + + To fix this, explicitely cast to GtkItemFactoryCallback where needed.