Commit Graph

32164 Commits

Author SHA1 Message Date
Patrick Griffis
90c29b7fb2 gresolver: Fix loopback detection of IPv6 addresses
Previously the len passed to g_socket_address_new_from_native() was only
for IPv4 addresses and the constructor would fail.

This was reported and discussed here:
fe0139ee98 (note_2581394)
2025-10-21 16:20:45 -05:00
Philip Withnall
7b2afbd420 2.86.1
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2.86.1
2025-10-21 15:26:53 +01:00
Michael Catanzaro
b97228a7c7 Merge branch 'backport-4871-netlink-notify-connectivity-glib-2-86' into 'glib-2-86'
Backport !4871 “gnetworkmonitorbase: Add missing notify::connectivity signal” to glib-2-86

See merge request GNOME/glib!4873
2025-10-20 17:36:08 -05:00
Philip Withnall
9fa7f4cc7d Merge branch 'backport-4859-appinfo-portal-crash-glib-2-86' into 'glib-2-86'
Backport !4859 “gopenuriportal: Fix a crash when the file can’t be opened” to glib-2-86

See merge request GNOME/glib!4865
2025-10-20 22:04:20 +00:00
Philip Withnall
d80a4795c8 Merge branch 'backport-4792-add-back-type-refs-glib-2-86' into 'glib-2-86'
Backport !4792 “gtype: Use transfer none for types (un)ref functions” to glib-2-86

See merge request GNOME/glib!4867
2025-10-20 21:38:27 +00:00
Philip Withnall
9373f55278 gnetworkmonitorbase: Add missing notify::connectivity signal
The connectivity is directly derived from the `is_available` variable,
so if that changes, we need to notify of a change in `connectivity` too.

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

Fixes: #3803
2025-10-20 21:54:36 +01:00
Philip Withnall
7a9a382149 gopenuriportal: Fix a crash when the file can’t be opened
Rather than reporting an error via a new `GTask`, report it via the
`GTask` we’ve already created. This avoids a critical warning about
destroying the `GTask` without returning a result.

Also ensure to disconnect the D-Bus signal subscription first, to avoid
an assertion failure in `call_data_free()`.

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

Fixes: #3798
2025-10-20 21:45:37 +01:00
Marco Trevisan (Treviño)
f9a5848cf1 gtype: Use transfer none for types (un)ref functions
We have some (deprecated) methods that technically still return
transfer-full instances of GTypeClass's and GTypeInterface's.

The introspection scanner cannot generate bindings for them though since
it does not know how to manage their lifecycle, and we end up skipping
these symbols.

This is breaking some language bindings, and in particular gjs [1] and
lua-lgi, that were using the .ref methods.

While we should not use deprecated functions in the language bindings,
these symbols should still be introspected.

[1] https://gitlab.gnome.org/GNOME/gjs/-/issues/711

Partially reverts commit cad84d5e27.
2025-10-20 20:45:26 +00:00
Michael Catanzaro
edda8a6a9a Merge branch 'backport-4870-4868-ci-fixes-glib-2-86' into 'glib-2-86'
Fix macOS and msys2 CI builds on glib-2-86 branch

See merge request GNOME/glib!4872
2025-10-20 15:14:50 -05:00
René de Hesselle
954ac5f36f ci: Setup ramdisk for temp dir redirection
This step is no longer "hidden away in the infrastructure" but now in
the open.

Background: some GLib tests can fail with timeouts because of some
assumptions regarding the temporary directory that don't work out on
macOS. Until this is properly investigated and resolved, the
workaround is to redirect it to a ramdisk.

Also add ORKA_RUNNER variable as the macOS CI infrastructure evolves.
Future changes to the image can be controlled this way.

Fixes https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/2091
2025-10-20 16:34:44 +01:00
Luca Bacci
a0fad794df CI/MSYS2: Set GitLab submodule strategy to recursive
Workaround for #3715
2025-10-20 16:34:44 +01:00
Philip Withnall
344fceba86 Merge branch 'glib-2-86' into 'glib-2-86'
Update British English translation (2.86)

See merge request GNOME/glib!4848
2025-10-02 14:55:51 +00:00
Bruce Cowan
0574833f42 Update British English translation 2025-10-02 15:34:29 +01:00
Philip Withnall
22068cf72f Merge branch 'cherry-pick-d632c3ab' into 'glib-2-86'
Backport "girnode: Fix computation of union member offsets" to glib-2-86

See merge request GNOME/glib!4842
2025-09-30 16:34:05 +00:00
Philip Chimento
ecbf92a586 girnode: Fix computation of union member offsets
Regression from 501ff95c. Union member offsets are always 0, but we need
to mark them as 'COMPUTED' otherwise they are not written to the
typelib, which results in gi_field_info_get_offset() returning 0xffff.

Since gi_field_info_get/set_field() cannot check that the offset is
within the size of the struct or union, that means poking into invalid
memory addresses.

This also adds some basic tests for GIFieldInfo which would have caught
this bug.

Closes: #3745
2025-09-30 16:36:40 +01:00
Philip Withnall
091b7cdd93 Merge branch 'glib-2-86' into 'glib-2-86'
Update Romanian translation

See merge request GNOME/glib!4839
2025-09-30 15:27:59 +00:00
Antonio Marin
6fa4379cdb Update Romanian translation 2025-09-27 09:40:46 +00:00
Michael Catanzaro
5713425544 Merge branch 'backport-4835-pt-translation-glib-2-86' into 'glib-2-86'
Backport !4835 “Update Portuguese translation” to glib-2-86

See merge request GNOME/glib!4836
2025-09-24 11:13:06 -05:00
Michael Catanzaro
f455ae72ee Merge branch 'backport-4810-4819-user-dirs-duplicates-glib-2-86' into 'glib-2-86'
Backport !4810 and !4819, various fixes to user-dirs.dirs handling in gutils

See merge request GNOME/glib!4834
2025-09-24 11:10:46 -05:00
Hugo Carvalho
500f836370 Update Portuguese translation 2025-09-24 11:09:58 +01:00
Philip Withnall
25dd814ed8 tests: Add a test for g_reload_user_special_dirs_cache()
This test specifically checks whether the documented behaviour of
deliberately leaking old special dirs strings (which might still be
pointed to in user code) works.

I haven’t gone back and used this new unit test with an older version of
GLib, but I suspect the ‘deliberate leak’ code hasn’t worked for a
while. See the changes in the previous few commits, which were necessary
to get this unit test to pass.

The previous `test_user_special_dirs()` test has been deleted, as what
it was testing has been entirely subsumed into the new test.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:59 +01:00
Philip Withnall
fa1ed222e2 tests: Factor out a helper function in the utils tests
This introduces no functional changes, it just factors out a helper to
set a mock `user-dirs.dirs` file, so that we can do the same in multiple
tests.

It does add a little more error checking to the helper code though; in
particular it checks that the test is running with
`G_TEST_OPTION_ISOLATE_DIRS`.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:54 +01:00
Philip Withnall
964c3f1069 gutils: Move the special case default value for G_USER_DIRECTORY_DESKTOP
Otherwise it isn’t set on every code path, and it’s possible for a
caller to receive `NULL` when they call `g_get_user_special_dir
(G_USER_DIRECTORY_DESKTOP)`, i.e. after calling
`g_reload_user_special_dirs_cache()`.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:50 +01:00
Philip Withnall
ab09a3e933 gutils: Fix deliberate-leak code in g_reload_user_special_dirs_cache()
It seems it wasn’t behaving as advertised: it was freeing all the old
string values unless they were strcmp-equal to the new ones, in which
case the new ones were discarded.

What’s actually documented is that the old values are always leaked,
unless they’re strcmp-equal to the new ones.

Adjust the code to match the documentation. A unit test will be added in
a following commit.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:45 +01:00
Philip Withnall
e4c2b08218 gutils: Fix a leak when user-dirs.dirs declares a variable twice
Found by the oss-fuzz test for this parser,
`fuzzing/fuzz_special_dirs.c`.

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

oss-fuzz#445870121
oss-fuzz#445848222
2025-09-24 08:38:41 +01:00
Philip Withnall
888415030e tests: Fix a minor leak in the utils test
Found with `meson test --setup valgrind`, although I also had to change
relevant lines in `glib/tests/meson.build` temporarily to avoid the
other tests in the file taking forever:
```
  'utils' : {
    'c_standards': c_standards.keys(),
    'args': ['-p', '/utils/user-special-dirs'],
  },
```

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:36 +01:00
Philip Withnall
0a0da8b21a tests: Rename a couple of tests for consistency
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:32 +01:00
Philip Withnall
66aee5e2c8 tests: Move user-special-dirs test from utils-isolated.c to utils.c
`utils-isolated.c` is meant for testing the behaviour of
`G_TEST_OPTION_ISOLATE_DIRS`, not testing the general behaviour of
`gutils.c`. My mistake for not noticing this at code review time when
the test was added.

This introduces no functional changes, just moves a test around.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:28 +01:00
Philip Withnall
133aed1875 tests: Use G_TEST_OPTION_ISOLATE_DIRS for utils tests
Another test isolated.

This does mean moving one of the test cases from the suite out into a
separate suite, as it explicitly relies on running without
`G_TEST_OPTION_ISOLATE_DIRS`, and I think that makes sense. The other
test cases run fine when isolated.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2025-09-24 08:38:23 +01:00
Tobias Stoeckmann
d30730bc71 gutils: Fix file name in comment
The implementation can be found in gosxutils.m.
2025-09-24 08:38:18 +01:00
Tobias Stoeckmann
3d7caa9407 gutils: Mark load_user_special_dirs unlocked
The load_user_special_dirs function performs no internal locking, which
means that callers must already hold the g_utils_global lock. Since we
mark some getters as unlocked by now, do the same with
load_user_special_dirs to highlight this additional requirement.

Suggested by Michael Catanzaro
2025-09-24 08:38:12 +01:00
Michael Catanzaro
4df37832d9 Merge branch 'backport-4827-hostutils-non-ascii-glib-2-86' into 'glib-2-86'
Backport !4827 “ghostutils: Treat 0x80 (and above) as non-ASCII” to glib-2-86

See merge request GNOME/glib!4828
2025-09-22 16:42:07 -05:00
Tobias Stoeckmann
e56606de3d ghostutils: Treat 0x80 (and above) as non-ASCII
Any ASCII character above 0x7F should be treated as UTF-8 in
ghostutils functions because GLib expects host names to be either
punycode encoded or in valid UTF-8 format.

The checks in gutf8.c already treat 0x80 as non-ASCII, but two checks
in ghostutils.c erroneously check for "great than" not "greater than or
equal to".

Clarify this by adding a new macro which is reused by PUNICODE_IS_BASIC
for better documentation in code.
2025-09-22 18:04:07 +01:00
Philip Withnall
b055af41d0 Merge branch 'backport-4820-gdbus-test-race-glib-2-86' into 'glib-2-86'
Backport !4820 “gio/tests: Fix a race condition in /gdbus/connection/flush” to glib-2-86

See merge request GNOME/glib!4821
2025-09-19 17:29:01 +00:00
Simon McVittie
209dff23f1 gio/tests: Wait up to 10 seconds for a signal to be received
If the build/test machine is slow, heavily-loaded or otherwise
inconvenienced, it might take a few seconds for the signal to be sent
by the subprocess, received by the message bus, re-broadcasted by the
message bus and received by the test code. Wait a few more seconds
before giving up.

If this test is successful, increasing this timeout will not slow it
down: we stop waiting for the signal as soon as we receive it. This will
only make any difference if the test would have failed.

Signed-off-by: Simon McVittie <smcv@debian.org>
2025-09-19 16:55:55 +01:00
Simon McVittie
b8f88557ab gio/tests: Convert the time to wait for expected signal into a constant
No functional change.

Signed-off-by: Simon McVittie <smcv@debian.org>
2025-09-19 16:55:55 +01:00
Simon McVittie
f866de57bf gio/tests: Avoid a race condition
We have two things happening in parallel:

1. The GDBus worker thread writes out an AddMatch call to the socket,
   the message bus reads that method call from the other end of the
   socket, and the message bus responds by adding the match rule
   for the signal subscription

2. The main thread forks, and the child execs
   gdbus-connection-flush-helper, which sends the signal that we are
   expecting; the message bus receives that signal, and broadcasts it
   to subscribers, if any

Normally (1.) wins the race because exec'ing a child process is more
time-consuming than IPC, and the test passes.

However, it is possible for (2.) to win the race. If so, we will never
receive the expected signal (because it was received by the message bus
before the AddMatch() method call, so at the time it was received, the
test was not yet a subscriber); the test waits until the timeout and
then gives up, and the test fails.

For whatever reason, Debian's s390x buildd seems to be reliably failing
this test since this week, having previously passed. I don't know what
changed. I can (very rarely) reproduce the race condition described
above on a developer-accessible s390x machine by repeatedly running the
/gdbus/connection/flush test in a loop.

Bug-Debian: https://bugs.debian.org/1115617
Signed-off-by: Simon McVittie <smcv@debian.org>
2025-09-19 16:55:55 +01:00
Simon McVittie
5059294535 gio/tests: Factor out connection_wait_for_bus() from gdbus-subscribe
Signed-off-by: Simon McVittie <smcv@debian.org>
2025-09-19 16:55:55 +01:00
Philip Withnall
043d14fdd3 Merge branch 'backport-4811-4813-translations-glib-2-86' into 'glib-2-86'
Backport translation updates to glib-2-86

See merge request GNOME/glib!4814
2025-09-17 08:58:23 +00:00
Милош Поповић
95f85b7e44 Update Serbian translation 2025-09-17 09:09:37 +01:00
Kristjan ESPERANTO
dacbf04a00 Update Esperanto translation 2025-09-17 09:09:37 +01:00
Philip Withnall
06e22dd0dc Merge branch 'cherry-pick-18a7e7b4' into 'glib-2-86'
Trivial backport of "gutils: Handle singletons in unlocked functions" to glib-2-86 branch

See merge request GNOME/glib!4809
2025-09-16 17:08:56 +00:00
Michael Catanzaro
bcf4274f43 gutils: Handle singletons in unlocked functions
Make sure that results of build functions are stored in singletons to
avoid creating multiple instances which eventually could leak.

Fixes: #3784


(cherry picked from commit 18a7e7b4a2)

Co-authored-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-09-16 11:09:15 -05:00
Philip Withnall
958a0bccbe Merge branch 'help-width' into 'main'
get_help(): Ignore width of invisible options

Closes #3781

See merge request GNOME/glib!4801
2025-09-16 10:51:14 +00:00
FeRD (Frank Dana)
bff4dcb3d8 get_help(): Ignore width of invisible options
When get_help() gets ready to lay out the help text into columns,
it first goes through and computes the max_width of the strings in
the left column. Problem is, it measures the width of every
available option, whether or not they'll actually be displayed.

Instead, let's use the same criteria used when deciding whether
to display an option, to decide whether or not to account for it
when computing max_width. This way, the layout is sized for the
help that's actually being produced.

Fixes #3781
2025-09-16 11:20:17 +01:00
Philip Withnall
c091c3e3f1 Merge branch 'fuzzing_special_dirs' into 'main'
fuzzing: Fix fuzz_special_dirs

Closes #3783

See merge request GNOME/glib!4804
2025-09-16 08:44:04 +00:00
Tobias Stoeckmann
0bebad35cf fuzzing: Fix fuzz_special_dirs
Always NUL-terminate the data, which g_file_get_contents does as well.
This fixes unnecessary fuzzer warnings.

For further clarification of this requirement, rename the internally
used function.

Fixes: #3783
2025-09-16 10:28:14 +02:00
Philip Withnall
c31c4a5259 Merge branch 'special_dirs' into 'main'
gutils: Improve load_user_special_dirs' user-dirs.dirs parser

See merge request GNOME/glib!4800
2025-09-15 22:57:44 +00:00
Tobias Stoeckmann
ed594d819e fuzzing: add special dirs fuzzing test
Split custom user-dirs.dirs parser into its own gutilsprivate.c file
for easier fuzzing support and add a fuzzing test.
2025-09-16 00:08:17 +02:00
Tobias Stoeckmann
300722b6c4 gutils: Handle huge lines in load_user_special_dirs
If a line is longer than G_INTMAX, still treat it correctly without
possibly provoking an out of boundary read.
2025-09-15 17:21:16 +02:00