31273 Commits

Author SHA1 Message Date
Philip Withnall
7fffe59037 Merge branch 'wip/pwithnall/soft-c11-dependency' into 'main'
build: Add a soft dependency on C11

See merge request GNOME/glib!4473
2025-02-04 16:35:33 +00:00
Philip Withnall
0445d555e0
docs: Stop mentioning outdated C versions in various docs
Link to the toolchain requirements, which are kept up to date, rather
than duplicating them across multiple documents.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-02-04 16:01:44 +00:00
Philip Withnall
445eea668a
build: Add a soft dependency on C11
This will warn if GLib is configured with a toolchain which doesn’t
support C11. We currently require C99. If nobody complains (as directed
by this warning) we will start to require C11 in the next unstable
release series (2.85).

See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3574#note_1859924

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-02-04 15:59:51 +00:00
Philip Withnall
97fdba0d2f Merge branch 'cancellable-source-dispose-races' into 'main'
gcancellable: Ignore cancelled callback on disposed source

Closes #3448

See merge request GNOME/glib!4206
2025-02-04 14:40:56 +00:00
Philip Withnall
ff2c5c3e74
tests: Fix non-atomic accesses to atomic variables in cancellable test
As suggested by Marco Trevisan in !4206.

This might eliminate some spurious failures of the test.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-02-04 14:06:15 +00:00
Marco Trevisan (Treviño)
d7c8bb0726 gcancellable: Ignore cancelled callback on disposed source
Prevent to access to a disposed gsource in the GCancellable cancelled
signal callback.

Due to the fact that the signal is called in the same thread in which
the cancellable get cancelled, we may receive the callback just after
the GSource has been disposed or during its disposal.

To prevent this, let's pass to the signal a pointer to the source itself
and nullify atomically the first time we're calling a callback or
disposing it.

In case the dispose function wins the race, then the callback will just
do nothing, while the disposal will continue as expected.

In case the callback wins the race, during the concurrent disposal we'll
just wait for the callback to be completed, before returning the disposal
itself that will likely lead to freeing the GSource.

Closes: #3448
2025-02-04 13:01:03 +00:00
Philip Withnall
eec7ba6ef3 Merge branch '3592-dbus-serial-overflow' into 'main'
gdbusconnection: Prevent sending a serial of zero on overflow

Closes #3592

See merge request GNOME/glib!4470
2025-02-04 11:09:45 +00:00
Philip Withnall
f7a0e5f13f Merge branch 'wip/nacho/gregistry' into 'main'
Registry backend fixes

See merge request GNOME/glib!4468
2025-02-04 10:40:03 +00:00
Philip Withnall
8297bbc00c
gdbusmessage: Check that message serial is not set to zero
It’s disallowed by the D-Bus specification.

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

Helps: #3592
2025-02-04 10:32:44 +00:00
Philip Withnall
b94b44407a
gdbusconnection: Prevent sending a serial of zero on overflow
It finally happened: someone managed to keep a process alive long
enough, and using a single `GDBusConnection`, to overflow the
`last_serial` counter in the connection and send an invalid message with
serial of zero (which is disallowed by the D-Bus specification).

Avoid that happening in future by skipping serials of zero on overflow,
and wrapping straight back around to 1.

This looks a little more confusing than it is, because `last_serial` is
pre-incremented on use, so to skip zero, we explicitly set it to zero.
This is exactly what happens when the `GDBusConnection` is initialised
anyway.

I can’t think of a way to add a unit test for this — there is no way to
affect the value of `last_serial` except by sending messages (each one
increments it), and in order to get it to overflow by sending messages
at 1kHz, the test would have to run for 49 days.

Instead, I tested this manually by temporarily modifying
`GDBusConnection` to initialise `last_serial` to `G_MAXUINT32 - 3`, then
checked that the unit tests all still passed, and that the overflow code
was being executed.

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

Fixes: #3592
2025-02-04 10:32:37 +00:00
Silvio Lazzeretti
23ad130b15 registrybackend: fix some memory leaks 2025-02-04 08:38:48 +01:00
Silvio Lazzeretti
f45b5ea776 registrybackend: make subscribe and unsubscribe thread-safe
The registry backend uses a thread to monitor
registry changes and send notifications.
The state of this thread and structures used
for communicating with it are kept in the watch
variable.
The subscribe and unsubscribe functions might be
concurrently called from multiple threads and
need to communicate with the monitoring thread.
For this reason we need to synchronize the access
to the watch variable.
2025-02-04 08:38:45 +01:00
Philip Withnall
e96bc30c16 Merge branch 'ebassi/goption-flag-deprecated' into 'main'
Add G_OPTION_FLAG_DEPRECATED

See merge request GNOME/glib!4046
2025-02-03 15:37:23 +00:00
Emmanuele Bassi
b145330b75 Add G_OPTION_FLAG_DEPRECATED
Generate a deprecation notice in the `--help` output for deprecated
options. This helps with the documentation of command line utilities.

Put the deprecation notice near the argument, to allow application
developers to add a notice on the deprecation on their own, and
explain what to use instead.
2025-02-03 15:37:23 +00:00
Philip Withnall
b9a4039271 Merge branch 'main' into 'main'
Add support for QNX8.0

See merge request GNOME/glib!4466
2025-02-03 15:10:06 +00:00
Philip Withnall
cac9100960 Merge branch 'ebassi/gtype-refcount' into 'main'
Drop TypeNode reference counting

See merge request GNOME/glib!3255
2025-02-03 14:38:24 +00:00
Emmanuele Bassi
dc86ad1925 Drop TypeNode reference counting
We don't allow unloading types, both static and dynamic, since 2013. The
code that deals with reference counting is mostly dead code, and makes
reasoning about the type system more complicated than necessary.

Since type classes and interfaces can only be instantiated, we introduce
explicit getter functions that create a GTypeClass or a GTypeInterface
vtable; the ref() and unref() API gets a "soft" deprecation (explicitly
not using `GOBJECT_DEPRECATED_IN_*` yet), to allow people to
progressively port their code.
2025-02-03 14:38:24 +00:00
Felix Xing
e99e27848e Add checking for <sys/ucred.h>
A new header check is added for non-standard <sys/ucred.h>. Some platforms, like Linux, might support <sys/param.h>, <sys/mount.h>, and <fstab.h> but not this. Which can cause compilation to fail for gio/gunixmounts.c
2025-02-03 09:19:17 -05:00
Philip Withnall
0621d0ddb8 Merge branch 'glib-function-pointer-requirements' into 'main'
Document function pointer cast requirements

Closes #3595

See merge request GNOME/glib!4469
2025-02-03 11:40:12 +00:00
Demi Obenour
9eb0828bd8 Document function pointer cast requirements
Helps: #3596
Fixes: #3595
2025-02-03 11:40:12 +00:00
Michael Catanzaro
9b1e0a583a Merge branch 'gi-static-vfuncs' into 'main'
Support static vfuncs in GIRepository

See merge request GNOME/glib!4457
2025-02-01 14:10:57 +00:00
Felix Xing
a177c46b19 Add support for QNX8.0
This request brings support to the latest version of QNX software. _g_get_unix_mount_points (void) for getfsent() system also works on QNX. To avoid duplicating codes, it will be reused.
2025-01-31 09:18:02 -05:00
Philip Withnall
9c7a57dcc5 Merge branch 'issue-3587-2' into 'main'
gosxappinfo: Fix leak

See merge request GNOME/glib!4464
2025-01-28 15:40:26 +00:00
Andre Miranda
62d8d0b6ec gosxappinfo: Fix leak
Slightly reworked by Philip Withnall (any mistakes his).
2025-01-28 12:03:10 +00:00
Philip Withnall
fcc610791b Merge branch 'issue-3587' into 'main'
gosxappinfo: Correctly launch list of files

Closes #3587

See merge request GNOME/glib!4462
2025-01-24 12:29:54 +00:00
Andre Miranda
8b64bb8751 gosxappinfo: Correctly launch list of files
Fixes #3587
2025-01-24 12:29:54 +00:00
Michael Catanzaro
0c38fd3c14 Merge branch 'docs-updates' into 'main'
docs: Update the release documentation for the new release workflow

See merge request GNOME/glib!4461
2025-01-23 16:00:56 +00:00
Philip Withnall
9e3c017df8
docs: Update various outdated links which pointed to wiki.gnome.org
wiki.gnome.org has been retired but for some reason none of the old
pages were given HTTP redirects, so everyone has to update all their
links manually everywhere.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-01-23 14:00:46 +00:00
Philip Withnall
d11dac3836
docs: Update the release documentation for the new release workflow
Make it more closely match
https://handbook.gnome.org/maintainers/making-a-release.html again.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-01-23 13:59:48 +00:00
Philip Withnall
884925d02e
2.83.3
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2.83.3
2025-01-23 13:20:40 +00:00
Philip Withnall
2adc87bbd8 Merge branch 'extension-docs' into 'main'
docs: Document more extension points

See merge request GNOME/glib!4458
2025-01-22 23:33:32 +00:00
Michael Catanzaro
82c179e624 Merge branch 'garray_unref_docs_clarify' into 'main'
docs: Clarify that g_array_unref() works like g_ptr_array_unref().

See merge request GNOME/glib!4460
2025-01-22 23:01:22 +00:00
Philip Withnall
58c4ab46f2
docs: Port GIO overview to gi-docgen linking syntax and fix a few typos
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-01-22 22:48:43 +00:00
Logan Rathbone
14adec6a54 docs: Clarify that g_array_unref() works like g_ptr_array_unref().
This makes the documentation for this function more consistent with that
of g_ptr_array_unref(), which makes it clear that it acts like
g_(ptr_)array_free with free_segment=TRUE.
2025-01-22 13:29:50 -05:00
Matthias Clasen
d760bfef00 docs: Document more extension points
GIO is more extensible than we know! Document more of the existing
extension points, their included implementations and their purpose.
2025-01-21 12:00:42 +00:00
Philip Chimento
7471ab20d1 girepository: Add test for static vfunc info
This is a test for the functionality in the previous commit. It depends
on g-ir-scanner being able to scan static vfuncs, and is otherwise
skipped.

The g-ir-scanner functionality is in
https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/361
2025-01-19 13:49:55 -08:00
Marco Trevisan (Treviño)
7ea9840cf4 girepository: Read static vfunc attribute exposing via callable is_method()
Read the static attribute for virtual functions, and make sure that
g_callable_info_is_method() returns false for such cases.
2025-01-19 13:49:55 -08:00
Philip Chimento
fe142e3b32 girepository: Add baseline tests for gi_callable_info_is_method()
This tests existing functionality.
2025-01-18 14:27:24 -08:00
Philip Chimento
3d71dcaa64 gicallableinfo: Fix inaccuracy in is_method docs
The docs say that gi_callable_info_is_method() on a GICallbackInfo
always returns TRUE. But the source code says it always returns FALSE.
2025-01-18 14:16:55 -08:00
Michael Catanzaro
26bc1d08ec Merge branch 'gmacros-initialize-variable' into 'main'
gmacros: zero-initialize int G_PASTE (_g_boolean_var_, uniq)

Closes #3582

See merge request GNOME/glib!4456
2025-01-17 20:21:45 +00:00
Johannes Penßel
88a095f62e gmacros: zero-initialize int G_PASTE (_g_boolean_var_, uniq) 2025-01-17 20:21:44 +00:00
Michael Catanzaro
6e896f5673 Merge branch 'th/gdataset-index' into 'main'
[th/gdataset-index] add a lookup index (GHashTable) to `GData`

See merge request GNOME/glib!3885
2025-01-16 17:46:53 +00:00
Philip Withnall
6c660596ea Merge branch 'document-deprecated-flags-none' into 'main'
gioenums: Add deprecation for FLAGS_NONE

See merge request GNOME/glib!4454
2025-01-13 19:42:10 +00:00
Maximiliano
9d3c384565 gioenums: Add deprecation for FLAGS_NONE
g-ir won't pick it if it is not in its own doc block.

Requires
https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/512,
otherwise the deprecated tag won't be set in the introspection data.
2025-01-13 19:42:09 +00:00
Philip Withnall
ce7e867e57 Merge branch 'nielsdg/main-loop-docs' into 'main'
docs: Use gi-docgen syntax in main-loop.md

See merge request GNOME/glib!4455
2025-01-13 18:34:10 +00:00
Philip Withnall
b65e950b3e
docs: More gi-docgen linking in main-loop.md
Port the rest of the document to gi-docgen syntax, so we don’t have to
track partially-ported files.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Helps: #3250
2025-01-13 17:47:12 +00:00
Niels De Graef
bd148fd04d docs: Use gi-docgen syntax in main-loop.md
The "Main Loop" documentation wasn't actually linking to `GMainContext`
properly, so let's fix this.
2025-01-12 15:33:19 +01:00
Michael Catanzaro
7129521966 Merge branch 'dev' into 'main'
corrected Memory management of signal handlers anchor

Closes #3563

See merge request GNOME/glib!4453
2025-01-10 15:29:36 +00:00
arujjval
b67d6ec9ff
corrected Memory management of signal handlers anchor 2025-01-10 12:51:45 +05:30
Thomas Haller
3437414dd4 gdataset: use lookup index in g_datalist_id_remove_multiple()
In order to reuse datalist_find(), we turn the loops around. First loop
over the keys, and then (internally in datalist_find()) loop over the
entries.
2025-01-08 00:36:52 +01:00