5390 Commits

Author SHA1 Message Date
Sébastien Wilmet
6231b1abc9 License headers: replace current FSF address by a link to gnu.org
Even if the address is correct, it's far more convenient to have a link
to a website.

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:57 +01:00
Sébastien Wilmet
46c0c5cd85 License headers: replace old FSF address by a link to gnu.org
https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:57 +01:00
Sébastien Wilmet
f60590534d License headers: "the Gnome Library" -> "this library"
Harmonize a little the license headers. In most of the license headers
in GLib, it is "this library".

It is also what is explained at:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html#SEC4
"How to Apply These Terms to Your New Libraries"

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:56 +01:00
Sébastien Wilmet
8edcf67b02 License headers: "GLib" -> "This library"
Harmonize a little the license headers. In most of the license headers
in GLib, it is "This library".

It is also what is explained at:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html#SEC4
"How to Apply These Terms to Your New Libraries"

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:56 +01:00
Sébastien Wilmet
e603035d13 License headers: "The GLib Library" -> "This library"
Harmonize a little the license headers. In most of the license headers
in GLib, it is "This library".

It is also what is explained at:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html#SEC4
"How to Apply These Terms to Your New Libraries"

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:56 +01:00
Shawn Walker
9b3cb4470d Remove stray semicolon after g_variant_print() function in gvariant.c
https://bugzilla.gnome.org/show_bug.cgi?id=776198

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2016-12-27 20:49:42 +01:00
Sjoerd Simons
e097619327 Assert threads are created in test 642026
We kept seeing the glib testsuite hanging on our CI system in the
testcase for 642026. After some digging it turned out the jenkins slave
was misconfigured and its task limit was too low.

Add an assertion that the test thread has been created to more easily
spot this error condition as opposed to the test simply hanging.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

https://bugzilla.gnome.org/show_bug.cgi?id=769672
2016-12-27 20:43:17 +01:00
Chun-wei Fan
7518067cec gmessages.c: Windows: Improve g_log_writer_supports_colors()
... when tty terminal emulators (such as mintty) are used.  This support
is however for Vista and later, so use of such terminals should have
support for ANSI color codes in their outputs, even on Windows 7/8/8.1/

https://bugzilla.gnome.org/show_bug.cgi?id=775468
2016-12-08 22:15:47 +08:00
Sebastian Dröge
620b3c1e56 gmessages: Fix compilation on Android
There is no systemd on Android.

https://bugzilla.gnome.org/show_bug.cgi?id=775621
2016-12-05 12:12:50 +02:00
Chun-wei Fan
7a61a94b95 gmessages.c/Windows: Improve g_log_writer_supports_color()
Windows 10 begins to support color output on the console using ANSI
codes, but a few extra steps are required for this support, so we cannot
just use isatty() and expect colors to work in the outputs.
Instead, we use still use isatty() from the Windows CRT, and then enable
ENABLE_VIRTUAL_TERMINAL_PROCESSING if it returns true.

Also make the invalid parameter handler shared between gmessages.c and
gspawn-win32-helper.c, since it is basically intended to be a no-op stub.

https://bugzilla.gnome.org/show_bug.cgi?id=775468
2016-12-05 16:47:09 +08:00
Simon McVittie
4496ef91b5 g_hostname_is_ip_address: detect integer overflow
Signed integer overflow is undefined behaviour, which the undefined
behaviour sanitizer detects.

Previously, if the compiler had implemented this in the obvious way
(overflowing signed multiplication wraps around mod 2**32), we would
have incorrectly classified addresses where one octet was, for example,
(2**32 + 42) as valid IP addresses, by treating that octet as though
it was 42.

Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=775510
Reviewed-by: Colin Walters
2016-12-02 19:10:45 +00:00
Simon McVittie
1d697a5f30 g_unichar_iswide_cjk: add a special case for U+0000
bsearch() is defined to search for a non-null key, so we can't
search for NULL. The undefined behaviour sanitizer picks this up.

Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=775510
Reviewed-by: Colin Walters
2016-12-02 19:10:44 +00:00
Simon McVittie
e5ed410c8c Avoid calling Standard C string/array functions with NULL arguments
glibc string.h declares memcpy() with attribute(nonnull(1,2)), causing
calls with NULL arguments to be treated as undefined behaviour.
This is consistent with ISO C99 and C11, which state that passing 0
to string functions as an array length does not remove the requirement
that the pointer to the array is a valid pointer.
gcc -fsanitize=undefined catches this while running OSTree's test suite.

Similarly, running the GLib test suite reports similar issues for
qsort(), memmove(), memcmp().

Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=775510
Reviewed-by: Colin Walters
2016-12-02 19:10:39 +00:00
Philip Withnall
3e7b5cbef8 glib: Namespace global tapset variables by soname
global variables in SystemTap are shared between all SystemTap scripts;
so if scripts are loaded for two versions of GLib (for example, a stable
and a development version), those global variables will conflict.

Avoid that by including the soname’s version in the global variable
names.

https://bugzilla.gnome.org/show_bug.cgi?id=770646
2016-11-23 10:50:39 +00:00
Christian Hergert
18a33f72db introspection: use (nullable) or (optional) instead of (allow-none)
If we have an input parameter (or return value) we need to use (nullable).
However, if it is an (inout) or (out) parameter, (optional) is sufficient.

It looks like (nullable) could be used for everything according to the
Annotation documentation, but (optional) is more specific.
2016-11-22 14:14:37 -08:00
Simon McVittie
be4fd3d0b0 glib-init: statically assert that int is exactly 32 bits long
The GVariant documentation says you can assume that types of no more
than 32 bits may be assumed to be promoted to int by the usual
promotions. If we're going to document that, we should statically
assert that it's true, i.e. sizeof (int) >= sizeof (int32_t).

All reasonable modern platforms are either ILP32 (32-bit platforms),
LP64 (64-bit Linux, *BSD etc.), or LLP64 (64-bit Windows): there have
been ILP64 platforms in the past, but ILP64 has the compelling
disadvantage that {signed char, short, int} can't possibly provide
all of {int8_t, int16_t, int32_t} unless int is 32 bits long.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters
2016-11-22 18:50:02 +00:00
Simon McVittie
5227630077 glib-init: statically assert that "small" enums are all int-sized
ISO C allows compilers to make enums smaller than int if their
enumerated values would all fit in the range of a smaller type.

In practice, I suspect that in relevant compilers, all enums whose
values fit in the range INT32_MIN to INT32_MAX (inclusive) are the same
size as int. ISO C allows compiler to break that assumption, but those
that do would break code that works fine in other compilers, making the
compiler look bad, for no significant benefit. I conjecture that such
compilers are not popular.

Let's statically assert that my assumption holds. If all goes well,
GLib will continue to compile on every relevant platform; if it
fails to compile on some platform as a result of this change, then
there are probably a lot of naive uses of enums that need auditing
for this assumption.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Allison Lortie
2016-11-22 18:48:17 +00:00
Simon McVittie
1c47f62de7 gatomic: statically assert that our assumptions hold
This code assumes that int is exactly 32 bits, and that pointers
are either 4 or 8 bits, on platforms with __ATOMIC_SEQ_CST.
In practice this is going to be true.

A previous attempt at this assertion placed the G_STATIC_ASSERT
at the top level in gatomic.h, but that broke anjuta, which
redefined __unused__ at the time. These assertions are about the
platform/compiler ABI, so it's sufficient to check them once,
while compiling GLib itself; accordingly, move them to the
implementation.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932
2016-11-22 13:11:24 -05:00
Benjamin Otte
611b079e3d gvariant: Add suggested braces
... around empty body in an 'else' statement
2016-11-20 23:50:56 +01:00
Philip Withnall
3f12ca57c4 gtestutils: Clarify that g_assert() should not have side effects
g_assert() gets completely compiled out if G_DISABLE_ASSERT is defined,
so applications should not depend on side effects of the expression in
an assertion.
2016-11-09 16:52:21 +00:00
Mohammed Sadiq
4607bd377f gmain: fix g_main_context_check declaration
g_main_context_check is defined as a function returning gboolean.
It should be declared as such.

https://bugzilla.gnome.org/show_bug.cgi?id=774086
2016-11-09 10:38:20 -05:00
Philip Withnall
d8acf9b956 gmacros: Clarify G_GNUC_[PRINTF|SCANF] macro documentation
Clarify that the arguments parameter can be zero if the function being
annotated just accepts a string format argument, and no varargs for it
(for example, if it takes a va_list of arguments instead).

Add some links to the GCC documentation for the `format` attribute.
2016-11-09 15:11:53 +00:00
Matthias Clasen
2d56c49b10 Partially revert 10c490cdfe3ae042f747bd00f787492e2bdb7ed0
This commit broke some tests, and I don't have the time
to fix up all the expected output, so I'll revert the changes
to the affected files for now.

This needs to be redone with the necessary test fixes.
2016-10-24 10:21:59 -04:00
Daniel Macks
b56ededeec Document "-s" commandline flag for running test suites
https://bugzilla.gnome.org/show_bug.cgi?id=769135
2016-10-24 06:12:56 -04:00
Simon McVittie
c46dbd4752 Make g_utf8_make_valid public
Based on a patch by Simon van der Linden and rebased onto current GLib,
with improved documentation loosely based on Telepathy's
tp_utf8_make_valid().

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=591603
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=610969
Reviewed-by: Colin Walters <walters@verbum.org>
2016-10-13 21:52:42 +01:00
Edward E
01bfa16986 W32: pass correct (with offset) argc to protect_wargv
https://bugzilla.gnome.org/show_bug.cgi?id=772054
2016-10-13 14:10:57 +00:00
Piotr Drąg
10c490cdfe Use Unicode in translatable strings
See https://developer.gnome.org/hig/stable/typography.html

https://bugzilla.gnome.org/show_bug.cgi?id=772221
2016-10-12 21:30:42 +02:00
Matthias Clasen
67ce530581 Add version macros for 2.52 2016-10-12 15:07:31 -04:00
Philip Withnall
447044aef3 gtestutils: Fix a typo in the documentation for GTestFileType
EXTRA_DIST, not DIST_EXTRA.
2016-10-12 16:47:40 +01:00
Marc-André Lureau
615b847d98 glog: fix crash on windows with --subsystem,windows app
A windows application compiled with -Wl,--subsystem,windows has no
console attached. When started from the start menu for ex, it will crash
when a function attempt to use g_log:

 #10 0x00a21b26 in g_logv (log_domain=0xa842e1 <__func__.7668+329> "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=0xa845c6 <__func__.7668+1070> "%s: assertion '%s' failed", args=0x28f2bc "PG"")
 #11 0x00a21bb1 in g_log (log_domain=0xa842e1 <__func__.7668+329> "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=0xa845c6 <__func__.7668+1070> "%s: assertion '%s' failed") at gmessages.c:1337
 #12 0x00a22bac in g_return_if_fail_warning (log_domain=0xa842e1 <__func__.7668+329> "GLib", pretty_function=0xa84750 <__func__.65002> "g_log_writer_supports_color",
     expression=0xa844de <__func__.7668+838> "output_fd >= 0") at gmessages.c:2453
 #13 0x00a2239e in g_log_writer_supports_color (output_fd=-2) at gmessages.c:1826
 #14 0x00a226ac in g_log_writer_standard_streams (log_level=G_LOG_LEVEL_WARNING, fields=0x28f3c8, n_fields=4, user_data=0x0) at gmessages.c:2254
 #15 0x00a2290e in g_log_writer_default (log_level=G_LOG_LEVEL_WARNING, fields=0x28f3c8, n_fields=4, user_data=0x0) at gmessages.c:2357

According to https://msdn.microsoft.com/en-us/library/zs6wbdhx.aspx:

If stdout or stderr is not associated with an output stream (for
example, in a Windows application without a console window), the file
descriptor returned is -2. In previous versions, the file descriptor
returned was -1. This change allows applications to distinguish this
condition from an error.

Check if the stream exists and has an associated descriptor and return
G_LOG_WRITER_UNHANDLED if it's not the case.

Fixes:
https://bugzilla.gnome.org/show_bug.cgi?id=772511

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2016-10-10 09:39:07 -04:00
Rico Tzschichholz
0d1eecddd4 unicode: Fix ordering in iso15924_tags to match GUnicodeScript enum
https://bugzilla.gnome.org/show_bug.cgi?id=771591
2016-10-05 15:23:49 +02:00
Edward E
7485abe481 W32: pass argc returned by CommandLineToArgvW() to to protect_wargv()
It turns out that CommandLineToArgvW() (at least on XP) doesn't end the argv
pointer array with a NULL, but goes straight into argv[0] string data, as per
MSDN. So gspawn-win32-helper.c:protect_wargv() counts argc too high and
overflows.

https://bugzilla.gnome.org/show_bug.cgi?id=772054
2016-09-27 16:59:56 +00:00
Philip Withnall
6014039cd1 glib: Add SystemTap probe to g_source_add_child_source()
So that the relationships between parent and child GSources can be
probed using SystemTap.
2016-09-23 22:46:30 -07:00
Rico Tzschichholz
ba18667bb4 unicode: Update to unicode 9.0.0
https://bugzilla.gnome.org/show_bug.cgi?id=771591
2016-09-21 18:31:04 +02:00
Rico Tzschichholz
c7f4699735 unicode: Update break_mappings
This will be required for the update to unicode 9.0.0.

https://bugzilla.gnome.org/show_bug.cgi?id=771591
2016-09-21 18:30:52 +02:00
Jonh Wendell
063e279a56 Fixed annotation for g_log_variant() 2016-09-17 16:25:31 -03:00
Matthias Clasen
2dc11a55f8 Add a test for the previous fix 2016-09-12 22:28:35 -04:00
Kjell Ahlstedt
b12e0b8869 goption: Don't return pointers to deallocated memory
g_option_context_parse() can return pointers to deallocated strings, if the
command line contains an unknown option.

https://bugzilla.gnome.org/show_bug.cgi?id=646926
2016-09-12 22:27:48 -04:00
Jonh Wendell
e7bdd5d189 Add g_log_variant(): structured log that accepts a GVariant
This makes the structured logging available to other
languages via introspection.

https://bugzilla.gnome.org/show_bug.cgi?id=770971
2016-09-09 09:07:50 -03:00
Jonh Wendell
9323378834 tests: Remove an unsed variable 2016-09-09 09:07:50 -03:00
Jonh Wendell
b18051067a Removed an unused include 2016-09-09 08:50:55 -03:00
Philip Withnall
b4326bc348 gmessages: Drop unnecessary stdio.h include
This was needed for an earlier version of the structured logging work,
but not the latest.
2016-08-17 12:41:26 +02:00
Allison Lortie
6d1178b2d9 gregex: loosen behaviour testing
Circa 8.38, upstream PCRE (intentionally?) changed behaviour with
respect to whether options set with expressions like "(?i)" at the
top-level were reported via the pcre_fullinfo() API as having been
requested during compilation.

GLib contained a test that verified that these options were indeed
reported as if they had been provided as flags on the API.

Remove that check, and document the no-longer-deterministic behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=767240
2016-08-16 10:41:46 +02:00
Philip Withnall
5707c91a56 win_iconv: Fix some file handler leaks on exit
I realise this is a contradiction in terms, but it keeps code analysis
tools happy. As spotted by cppcheck, which could not attend GUADEC, but
sends everyone its best wishes anyway.
2016-08-13 10:31:26 +02:00
Philip Withnall
f1eeb7cf8c tests: Fix GSList test to not dereference off the end of an array
This looks like a typo or copypasta error. As spotted by cppcheck, which
is the code analysis tool GLib deserves, but not the one it needs right
now.
2016-08-13 10:29:31 +02:00
Philip Withnall
ba874a8580 tests: Add an assertion to guard against unexpected flags
This should not change the behaviour of the test, unless the test's
behaviour is changed in future. As spotted by cppcheck, which has
impeccable taste and a flair for the unexpected.
2016-08-13 10:28:24 +02:00
Philip Withnall
c868d9879c glib-mirroring-tab: Fix string format placeholder to be unsigned
Because the argument is unsigned. As spotted by cppcheck, which never
sleeps.
2016-08-13 10:27:54 +02:00
Philip Withnall
03b43f3f6a docs: Fix early termination of some documentation comments
As spotted by cppcheck, which has an eye for these things.
2016-08-13 10:27:28 +02:00
Philip Withnall
a5044a8e78 build: Fix SystemTap build to disable semaphores as before
At some point, upstream SystemTap changed from using a
STAP_HAS_SEMAPHORES preprocessor variable for this, to using
_SDT_HAS_SEMAPHORES instead. We need to update our build system to
disable that as well.

The original discussion about use of semaphores is here:

https://bugzilla.gnome.org/show_bug.cgi?id=606044

This was breaking the build with -flto enabled, either because -flto
doesn’t work with semaphores.

https://bugzilla.gnome.org/show_bug.cgi?id=768198
2016-08-13 09:32:12 +02:00
Philip Withnall
a079de930e gmessages: Add doc cross-refs about enabling structured logging
Ensure that all the old log handler documentation includes
cross-references to a new section about how to enable structured logging
(tl;dr: #define G_LOG_USE_STRUCTURED).

https://bugzilla.gnome.org/show_bug.cgi?id=769785
2016-08-12 14:14:54 +02:00