diff --git a/glib/glibconfig.h.in b/glib/glibconfig.h.in index 0d533c9f7..4e018a5f1 100644 --- a/glib/glibconfig.h.in +++ b/glib/glibconfig.h.in @@ -212,6 +212,8 @@ typedef @g_pid_type@ GPid; #define G_SEARCHPATH_SEPARATOR '@g_searchpath_separator@' #define G_SEARCHPATH_SEPARATOR_S "@g_searchpath_separator@" +#mesondefine G_HAVE_FREE_SIZED + G_END_DECLS #endif /* __GLIBCONFIG_H__ */ diff --git a/glib/gmem.h b/glib/gmem.h index 6e9b8ae16..9f3d42733 100644 --- a/glib/gmem.h +++ b/glib/gmem.h @@ -166,13 +166,13 @@ void g_aligned_free_sized (gpointer mem, #endif /* __GNUC__ */ -#if G_GNUC_CHECK_VERSION (4, 1) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_78 +#if G_GNUC_CHECK_VERSION (4, 1) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_78 && defined(G_HAVE_FREE_SIZED) #define g_free(mem) \ (__builtin_object_size ((mem), 0) != ((size_t) - 1)) ? \ g_free_sized (mem, __builtin_object_size ((mem), 0)) : (g_free) (mem) -#endif /* G_GNUC_CHECK_VERSION (4, 1) && && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_78 */ +#endif /* G_GNUC_CHECK_VERSION (4, 1) && && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_78 && defined(G_HAVE_FREE_SIZED) */ /** * g_steal_pointer: diff --git a/meson.build b/meson.build index 1d3754abb..1c62ea352 100644 --- a/meson.build +++ b/meson.build @@ -729,6 +729,10 @@ foreach f : functions endif endforeach +# Export the information about free_sized() so we can correctly define a macro +# wrapper around g_free()/g_free_sized() depending on whether it’s available +glibconfig_conf.set('G_HAVE_FREE_SIZED', have_func_free_sized) + # Check that stpcpy() is usable; must use header. # See: # https://github.com/mesonbuild/meson/issues/5628.