glib/girepository
Philip Withnall bf4cf2d464 gibaseinfo: Fix use of stack-allocated GIBaseInfos
Most of the code for handling stack-allocated infos was correct, it was
just missing code to initialise the `GTypeInstance` member.

Since `GTypeInstance` isn’t really designed for stack allocation, this
is a little hacky — it requires setting up the member within
`GTypeInstance` manually. It works, though.

The externally visible consequence of this, though, is that
stack-allocated `GIBaseInfo`s now need to be cleared when they’re
finished being used. This allows the `GTypeClass` ref to be dropped.

All users of the stack-allocated APIs in libgirepository will need to
adapt to this change.

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

Fixes: #3218
2024-01-23 18:07:17 +00:00
..
cmph girepository: Exclude private symbols from the ABI 2024-01-19 12:07:30 +00:00
tests girepository: Exclude private symbols from the ABI 2024-01-19 12:07:30 +00:00
tools g-ir-compiler: Fix leaks in write_out_typelib 2024-01-15 22:44:41 -08:00
gdump.c girrepository: Replace usage of gsize with standard size_t 2024-01-16 18:40:42 +01:00
gi-dump-types.c girepository: Replace tabs with spaces in indentation 2024-01-16 17:30:37 +01:00
giarginfo.c gibaseinfo: Fix use of stack-allocated GIBaseInfos 2024-01-23 18:07:17 +00:00
giarginfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gibaseinfo-private.h gibaseinfo: Allow parent types to be specified for derived types 2024-01-18 13:15:22 +00:00
gibaseinfo.c gibaseinfo: Fix use of stack-allocated GIBaseInfos 2024-01-23 18:07:17 +00:00
gibaseinfo.h gibaseinfo: Fix use of stack-allocated GIBaseInfos 2024-01-23 18:07:17 +00:00
giboxedinfo.c giboxedinfo: Add a tag type for boxed types 2024-01-18 13:15:22 +00:00
giboxedinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gicallableinfo.c gibaseinfo: Fix use of stack-allocated GIBaseInfos 2024-01-23 18:07:17 +00:00
gicallableinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gicallbackinfo.c gicallbackinfo: Port documentation to gi-docgen and update 2023-12-18 14:14:15 +00:00
gicallbackinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
giconstantinfo.c girrepository: Replace usage of gsize with standard size_t 2024-01-16 18:40:42 +01:00
giconstantinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gienuminfo.c girepository: Split GIValueInfo out of gienuminfo.c 2024-01-18 13:15:22 +00:00
gienuminfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gifieldinfo.c girrepository: Replace usage of gsize with standard size_t 2024-01-16 18:40:42 +01:00
gifieldinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
giflagsinfo.c gienuminfo: Split out GIFlagsInfo as a derived type 2024-01-18 13:15:22 +00:00
giflagsinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gifunctioninfo.c girepository: Use expected signed types for iterating 2024-01-16 18:40:42 +01:00
gifunctioninfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
giinterfaceinfo.c girepository: Use expected signed types for iterating 2024-01-16 18:40:42 +01:00
giinterfaceinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
ginvoke.c girrepository: Use standard int sized types instead of g[u]int* 2024-01-16 18:40:42 +01:00
giobjectinfo.c girepository: Use expected signed types for iterating 2024-01-16 18:40:42 +01:00
giobjectinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gipropertyinfo.c gipropertyinfo: Port documentation to gi-docgen and update 2023-12-18 14:14:15 +00:00
gipropertyinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
giregisteredtypeinfo.c girepository: Use char instead of glib-specific gchar 2024-01-16 18:40:42 +01:00
giregisteredtypeinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
girepository-private.h gibaseinfo: Make gi_info_init() take a GType rather than a GIInfoType 2024-01-23 18:06:08 +00:00
girepository.c girepository: Various indentation cleanups 2024-01-16 18:56:57 +01:00
girepository.h giboxedinfo: Add a tag type for boxed types 2024-01-18 13:15:22 +00:00
girffi.c gibaseinfo: Fix use of stack-allocated GIBaseInfos 2024-01-23 18:07:17 +00:00
girffi.h girrepository: Use void* instead of gpointer 2024-01-16 18:40:37 +01:00
girmodule-private.h girepository: Various indentation cleanups 2024-01-16 18:56:57 +01:00
girmodule.c girmodule: Ensure we actually use unsigned for gi_ir_module_fatal line 2024-01-16 18:40:42 +01:00
girnode-private.h giroffsets: Uniformly handle alignments as size_t 2024-01-18 13:09:29 +00:00
girnode.c girnode: Use size_t to compute gir node size and ensure value is valid 2024-01-16 18:40:42 +01:00
giroffsets.c giroffsets: Uniformly handle alignments as size_t 2024-01-18 13:09:29 +00:00
girparser-private.h girepository: Use char instead of glib-specific gchar 2024-01-16 18:40:42 +01:00
girparser.c girepository: Various indentation cleanups 2024-01-16 18:56:57 +01:00
girwriter-private.h girepository: Rename symbols to the GI namespace 2023-11-08 15:05:20 +00:00
girwriter.c gibaseinfo: Add initialiser macro for GIAttributeIter 2024-01-18 13:15:22 +00:00
gisignalinfo.c gisignalinfo: Port documentation to gi-docgen and update 2023-12-18 14:14:16 +00:00
gisignalinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gistructinfo.c gistructinfo: Use proper types for offset lookup 2024-01-16 18:40:42 +01:00
gistructinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gitypeinfo.c gitypeinfo: Change gi_type_info_get_array_length_index() to return uint 2024-01-16 23:26:02 +00:00
gitypeinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gitypelib-internal.h gitypelib: Replace gi_typelib_check_format with compile-time static checks only 2024-01-16 18:40:42 +01:00
gitypelib.c gitypelib: Replace gi_typelib_check_format with compile-time static checks only 2024-01-16 18:40:42 +01:00
gitypelib.h girrepository: Replace usage of gsize with standard size_t 2024-01-16 18:40:42 +01:00
gitypes.h giboxedinfo: Add a tag type for boxed types 2024-01-18 13:15:22 +00:00
giunioninfo.c girepository: Use size_t for size-related arguments and return types 2024-01-16 18:40:42 +01:00
giunioninfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
giunresolvedinfo.c giunresolvedinfo: Port documentation to gi-docgen and update 2023-12-18 14:14:16 +00:00
giunresolvedinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
givalueinfo.c girepository: Split GIValueInfo out of gienuminfo.c 2024-01-18 13:15:22 +00:00
givalueinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
givfuncinfo.c girepository: Various indentation cleanups 2024-01-16 18:56:57 +01:00
givfuncinfo.h girepository: Add type-checking cast macros 2024-01-18 13:15:22 +00:00
gthash.c girrepository: Use standard int sized types instead of g[u]int* 2024-01-16 18:40:42 +01:00
meson.build girepository: Exclude private symbols from the ABI 2024-01-19 12:07:30 +00:00