6341 Commits

Author SHA1 Message Date
Emmanuele Bassi
8316ae2241 Merge branch 'non-atomic-init' into 'master'
gatomicrefcount: Make g_atomic_ref_count_init non-atomic

See merge request GNOME/glib!460
2018-11-25 00:52:56 +00:00
Peter Wu
f2917459f7 gspawn: Fix g_spawn deadlock in a multi-threaded program on Linux
opendir and closedir are not async-signal-safe, these may call malloc
under the hood and cause a deadlock in a multi-threaded program.
This only affected Linux when /proc is mounted, other systems use a
slower path that iterates through all potential file descriptors.
Fixes a long-standing problem (since GLib 2.14.2).

Closes #945 and #1014
2018-11-24 16:01:28 +01:00
Philip Withnall
2722e9b31b build: Add a missing file to CLEANFILES
No idea why this didn’t cause problems with distcheck before.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-11-23 17:17:39 +00:00
Philip Withnall
1a46bf88bb docs: Add missing documentation for warnings and assertions
These symbols were listed in glib-undocumented.txt. Thanks gtk-doc.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-11-23 12:19:19 +00:00
Tomasz Miąsko
c2b22bd615 gthread: Synchronize access to g_once_init_list 2018-11-19 19:41:50 +01:00
Marco Trevisan (Treviño)
86c073dba9 gmacros: remove duplication on autoptr cleanup definition
Define _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS and reuse it for both
_GLIB_DEFINE_AUTOPTR_CHAINUP and G_DEFINE_AUTOPTR_CLEANUP_FUNC
2018-11-14 22:47:39 -06:00
Marco Trevisan (Treviño)
d58be1bda9 gmacros: make _GLIB_DEFINE_AUTOPTR_CHAINUP to define funcs for g_autolist
Also chainup to glib_(s)listautoptr_cleanup_* parent functions
to make g_autolist work with object defined in this way
2018-11-14 14:41:40 -06:00
Philip Withnall
6375476743 Merge branch 'gmain-tsan' into 'master'
gmain: Fix data races in GUnixSignalWatchSource and GChildWatchSource

See merge request GNOME/glib!446
2018-11-13 16:04:12 +00:00
Tomasz Miąsko
dd36cf3a8b gmain: Indicate atomic fields with a comment 2018-11-13 14:57:45 +01:00
Tomasz Miąsko
969b0e00b3 gmain: Guarantee handler dispatch after receiving UNIX signal
Guarantee that user signal callback is dispatched _after_ receiving a
signal as long as the handler expresses continued interest in receiving
such a notification.

Previously if a signal has been received during user callback dispatch
but before pending flag had been cleared then the signal would be
irrevocably lost.

This is a very useful guarantee to have in cases where signals are used
to signify a need for synchronization with external resources. For
example: reloading configuration file after SIGUSR1 or retrieving a
terminal size after SIGWINCH.
2018-11-13 14:57:27 +01:00
Tomasz Miąsko
9e652f94d2 gmain: Make GUnixSignalWatchSource pending field atomic
Ensure synchronization between prepare / check /dispatch of
GUnixSignalWatchSource and UNIX signal dispatcher by making operations
on `pending` field atomic.

Issue #1312.
2018-11-13 14:57:22 +01:00
Tomasz Miąsko
d2fd53df03 gmain: Make GChildWatchSource child_exited field atomic
Ensure synchronization between prepare / check of GChildWatchsource and
UNIX signal dispatcher by making operations on `child_exited` field
atomic. Use `child_exited` as publication flag for `child_status`.

Issue #1312.
2018-11-13 14:52:50 +01:00
Tomasz Miąsko
1c8f3c67c3 gmain: Remove redundant volatile from unix_signal_refcount
Acesss to unix_signal_refcount is protected by unix_signal_lock.
2018-11-13 14:52:50 +01:00
Tomasz Miąsko
ba18822f35 gdate: Use longest matching month name in g_date_set_parse
There are languages where a name of one month is a substring of another.
Instead of stopping search on the first match use the month that
constitutes the longest match.

Fixes #1343.
2018-11-13 14:43:34 +01:00
Philip Withnall
e0148985f3 Merge branch 'tests-tsan' into 'master'
tests: Fix some data races in tests

See merge request GNOME/glib!453
2018-11-13 13:12:38 +00:00
Philip Withnall
e990a9ff8e Merge branch '107-key-file-comment-line-breaks' into 'master'
gkeyfile: Fix parsing of new lines in comments

Closes #107

See merge request GNOME/glib!432
2018-11-12 12:57:24 +00:00
Will Thompson
f1175704b6
gmessages: don't memoize in g_log_writer_is_journald()
Previously, g_log_writer_is_journald() would cache the result for the
first (non-negative) FD it was called on, and return that result for
all future (non-negative) FDs. While unlikely, it's possible that
applications might call this function on something other than
fileno(stderr).

Move the memoization into g_log_writer_default(), which always passes
fileno(stderr).

Fixes #1589.
2018-11-12 11:20:49 +00:00
Tomasz Miąsko
4fde2b273d gatomicrefcount: Make g_atomic_ref_count_init non-atomic
Programmer needs to ensure that initializations happens before other
operations on gatomicrefcount as otherwise they could access
uninitialized memory, so there is no practical use case for making
initialization atomic.
2018-11-08 16:04:51 +01:00
Philip Withnall
0c6346c98f Merge branch 'atomic-ref-count-cnd' into 'master'
Atomic reference count in GVariant, ContainerInfo and GDBus introspection

See merge request GNOME/glib!452
2018-11-08 14:22:03 +00:00
Philip Withnall
0ef8dde34e Merge branch '1342-gvariant-alignment' into 'master'
gvariant: Realign data on construction if it’s not properly aligned

Closes #1342

See merge request GNOME/glib!455
2018-11-07 16:55:50 +00:00
Tomasz Miąsko
b5a41afb18 gvarianttypeinfo: Use gatomicrefcount for ContainerInfo reference count 2018-11-06 14:44:25 +01:00
Tomasz Miąsko
6d108587a4 gvariant-core: Use gatomicrefcount for GVariant reference count 2018-11-06 14:39:19 +01:00
Philip Withnall
409ff69bd1 gvariant: Re-use g_variant_serialised_check() to check alignment
Rather than duplicating the alignment checks when constructing a new
GVariant, re-use the alignment checks from GVariantSerialised. This
ensures that the same checks are done everywhere in the GVariant code.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1342
2018-11-06 12:49:25 +00:00
Philip Withnall
7b0f2e0e34 gvariant: Fix some GIR annotations on internal functions
Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-11-06 11:50:20 +00:00
Philip Withnall
0f2a6c61c9 gvariant: Realign data on construction if it’s not properly aligned
Otherwise the GVariant would later fail internal alignment checks,
aborting the program.

If unaligned data is provided to (for example)
g_variant_new_from_data(), it will copy the data into a new aligned
allocation. This is slow, but better than crashing. If callers want
better performance, they should provide aligned data in their call, and
it will not be copied or reallocated.

Includes a unit test.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1342
2018-11-06 11:50:20 +00:00
Marco Trevisan (Treviño)
cfd164980d gbookmarkfile: remove trailing spaces 2018-11-05 17:15:42 -06:00
Marco Trevisan (Treviño)
821d28024b bookmarkfile: Don't move an item if the uri has not changed
This was causing a crash, because we were first removing an item, freeing
both the instance itself and the key, and then trying to reuse those.

So, in this case, instead of reassigning an item, we can just return TRUE
as we have already the item at the right place, while it's not needed to
update the modified timestamp, since no modification happened in reality.

Fixes #1588
2018-11-05 17:15:32 -06:00
Marco Trevisan (Treviño)
94edafb5fa bookmarkfile: test that moving to the same name works
Verify that we can move a bookmark item to the same name, but actually this
causes a crash right now.
2018-11-05 17:06:52 -06:00
Tomasz Miąsko
68e78c6eb2 tests: Fix data races in gwakeuptest.c 2018-11-04 17:28:58 +01:00
Philip Withnall
73a982fa91 Merge branch 'wip/sadiq/likely' into 'master'
gmacros: Fix G_[UN]LIKELY to not mask -Wparentheses

See merge request GNOME/glib!372
2018-11-02 20:45:38 +00:00
Philip Withnall
74d2a8e500 Merge branch 'test-timeout' into 'master'
meson: Increase test timeouts

See merge request GNOME/glib!407
2018-11-02 11:02:32 +00:00
Philip Withnall
8f115b63b1 Merge branch 'atomic-ref-count' into 'master'
gvarianttypeinfo: Consistently use atomics to access ref_count

See merge request GNOME/glib!444
2018-11-02 10:29:48 +00:00
Tomasz Miąsko
aed3c0083b gtestutils: Make test_rand_* thread-safe within a single test case
Synchronize access to random number generator `test_run_rand` with
a lock to ensure that `g_test_rand_*` family of functions is
thread-safe.

The reseeding taking place between test case runs is intentionally left
unsynchronized. It is an error to continue using random number generator
after test case has already finished running. Lack of synchronization
here will make such erroneous use readily apparent with thread
sanitizer.
2018-11-02 08:29:08 +01:00
Tomasz Miąsko
03518e576e gvarianttypeinfo: Consistently use atomics to access ref_count 2018-11-01 21:55:07 +01:00
Simon McVittie
03413d5a87 meson: Mark gdatetime test as slow
This test isn't inherently slow, but it produces so much output that
it can take a minute or more on hardware with weak I/O performance.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2018-11-01 19:13:21 +00:00
Simon McVittie
13e206aaeb meson: Centralize test timeout values
Signed-off-by: Simon McVittie <smcv@collabora.com>
2018-11-01 19:13:21 +00:00
Philip Withnall
664fb6303b Revert "gdatetime: Enable compile time check of g_date_time_format() format"
This reverts commits:
 • 9ddcc79502349e02a1e796b363d891e177337af5
 • ae02adc3c3795bb32348c07d8f48504b41e9e2c7

g_date_time_format() supports a few non-standard format placeholders:
 • %:z
 • %::z
 • %:::z

These are all gnulib strtime() extensions, and hence are not recognised
by the compiler when the function is annotated with G_GNUC_STRFTIME.
However, this wasn’t noticed when we originally merged this change
because the errors were disabled in the tests which covered those
placeholders.
2018-11-01 16:12:32 +00:00
Matthias Clasen
9ddcc79502 Remove the G_GNUC_STRFTIME format check
This does not work, since g_date_time_format() supports
non-standard extensions such as %:::z, and this has
broken several consumers which use format errors, such
as ostree.
2018-11-01 12:00:58 -04:00
Philip Withnall
4f81c9eb97 Merge branch 'gdate-timezone' into 'master'
gdatetime: Fix formatting of time zones offsets in range -01:00 to +00:00

See merge request GNOME/glib!435
2018-10-31 22:35:00 +00:00
Philip Withnall
e7738e46a8 Merge branch 'mr/issue-1575' into 'master'
Enable compile time check of g_date_time_format() format

See merge request GNOME/glib!412
2018-10-31 22:23:50 +00:00
Christophe Fergeau
bd6d603398 test-gvariant: Add missing spaces before parens
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2018-10-31 18:44:21 +01:00
Christophe Fergeau
38d48b818a test-gvariant: Add and use assert_cmpstrv helper
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2018-10-31 18:44:21 +01:00
Christophe Fergeau
422d83cbaa test-gvariant: Remove some hardcoded strings
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2018-10-31 18:43:19 +01:00
Christophe Fergeau
572f78b649 test-gvariant: Use g_assert_* rather than g_assert()
This is desirable both to get more detailed failure messages; and
because g_assert() is compiled out when compiling with G_DISABLE_ASSERT,
which renders the tests useless.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2018-10-31 18:43:17 +01:00
Christophe Fergeau
e6e04d3b15 test-gvariant: Use gsize for loop indices
gint is not the best type when looping from 0 to N > 0, which usually is
the case in loops.  There are a few cases in this patch where guint is
used rather than gsize, this is when the index is used in a printf-like
function as this makes the format string easier to read

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2018-10-31 18:41:00 +01:00
Christophe Fergeau
b0a013e20e gvariant: Handle ^ay, ^&ay, ^aay, ^a&ay in g_variant_valist_free_nnp
g_variant_valist_free_nnp does not take into account ^*ay, which causes
crash when trying to use these types together with
g_variant_iter_loop().
2018-10-31 18:38:11 +01:00
Tomasz Miąsko
54c394a73f gdatetime: Fix formatting of time zones offsets in range -01:00 to +00:00
Formatting code for `%z` specifier incorrectly assumed that sign of
offset from UTC can be recovered from the number of hours alone, which
is not true for offsets between -01:00 and +00:00.

Extract and format sign separately to avoid the problem.

Issue #1337.
2018-10-31 15:02:22 +01:00
Christian Persch
ae02adc3c3 gdatetime: Enable compile time check of g_date_time_format() format
By annotating it with G_GNUC_STRFTIME.

https://gitlab.gnome.org/GNOME/glib/issues/1575
2018-10-31 11:50:07 +01:00
Christian Persch
d62a07831c gmacros: Add G_GNUC_STRFTIME macro
Analogous to G_GNUC_PRINTF and G_GNUC_SCANF, to annotate
functions similar to strftime.

https://gitlab.gnome.org/GNOME/glib/issues/1575
2018-10-31 11:50:07 +01:00
Christophe Fergeau
7d1b94d71a test-gvariant: Add test for ^ay, ^&ay, ^aay, ^a&ay
This will exhibit bugs in g_variant_valist_free_nnp() as these types are
not properly handled.
2018-10-30 21:04:08 +01:00