Commit Graph

32157 Commits

Author SHA1 Message Date
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
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
Tobias Stoeckmann
9a2d221e90 gutils: Reject unquoted entries in load_user_special_dirs
If the end quote is missing, reject the entry. Please note that this
still allows entries with an uneven amount of quotes, e.g. "/"".
2025-09-15 17:21:16 +02:00
Tobias Stoeckmann
43d9e50654 gutils: Strip all trailing slahes in load_user_special_dirs
Do what the comment states and strip all trailing slashes. Also, do not
strip the trailing slash if it's the only character left, i.e. if it
denotes the root directory.
2025-09-15 17:21:16 +02:00
Tobias Stoeckmann
2e88bd5fdd gutils: Only allow $HOME in load_user_special_dirs
Make sure that the allowed environment variable is actually HOME, not
any environment variable starting with HOME, e.g. HOMER.
2025-09-15 17:21:13 +02:00
Philip Withnall
63ff527253 Merge branch 'update-tr' into 'main'
Update Turkish translation

See merge request GNOME/glib!4802
2025-09-15 09:24:50 +00:00
Sabri Ünal
25b5bf8ea7 Update Turkish translation
Approved by Emin Tufan Çetin
https://l10n.gnome.org/vertimus/glib/main/po/tr/
2025-09-14 14:31:25 +03:00
Tobias Stoeckmann
82c83a8871 gutils: Support test env in load_user_special_dirs
XDG_CONFIG_DIR and HOME can be overridden with test environments. Read
these variables before building them again.

It's not possible to call the getter functions directly because the
caller of load_user_special_dirs already holds a lock and locking again
is undefined behavior and could lead to deadlocks.

Separate the functionality out into unlocked functions which definitely
have to be static to not expose them. Use them while holding the lock.
2025-09-12 17:06:13 +02:00
Philip Withnall
a0f23830b0 Merge branch 'patch-1' into 'main'
`gio/tests/socket-listener` should depend on `libdl`

Closes #3780

See merge request GNOME/glib!4799
2025-09-11 16:53:33 +00:00