pidgin/gtksourceview-marshal.h

Tue, 09 Jul 2024 02:03:20 -0500

author
Yoann Congal <yoann.congal@smile.fr>
date
Tue, 09 Jul 2024 02:03:20 -0500
branch
release-2.x.y
changeset 42808
210f318db492
parent 17880
5e73968467e0
permissions
-rw-r--r--

Fix incompatible pointer types for GtkItemFactoryCallbacks on gcc-14

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 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.

[0]: https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types

Testing Done:
Built with gcc-14, started and clicked on some affected menus

Reviewed at https://reviews.imfreedom.org/r/3282/


#ifndef __gtksourceview_marshal_MARSHAL_H__
#define __gtksourceview_marshal_MARSHAL_H__

#include	<glib-object.h>

G_BEGIN_DECLS

/* VOID:VOID (gtksourceview-marshal.list:1) */
#define gtksourceview_marshal_VOID__VOID	g_cclosure_marshal_VOID__VOID

/* VOID:BOOLEAN (gtksourceview-marshal.list:2) */
#define gtksourceview_marshal_VOID__BOOLEAN	g_cclosure_marshal_VOID__BOOLEAN

/* VOID:BOXED (gtksourceview-marshal.list:3) */
#define gtksourceview_marshal_VOID__BOXED	g_cclosure_marshal_VOID__BOXED

/* VOID:BOXED,BOXED (gtksourceview-marshal.list:4) */
extern void gtksourceview_marshal_VOID__BOXED_BOXED (GClosure     *closure,
                                                     GValue       *return_value,
                                                     guint         n_param_values,
                                                     const GValue *param_values,
                                                     gpointer      invocation_hint,
                                                     gpointer      marshal_data);

/* VOID:STRING (gtksourceview-marshal.list:5) */
#define gtksourceview_marshal_VOID__STRING	g_cclosure_marshal_VOID__STRING

G_END_DECLS

#endif /* __gtksourceview_marshal_MARSHAL_H__ */

mercurial