5236 Commits

Author SHA1 Message Date
Jan de Groot
4d74ca4c3a Make gtester-report compatible with Python 3
Convert tabs to spaces and replace print with print().
The script still works with Python 2.x.

https://bugzilla.gnome.org/show_bug.cgi?id=696324
2015-11-05 12:53:19 +01:00
Mikhail Zabaluev
0dbc81c73a Move G_POLLFD_FORMAT to glibconfig.h
It's a platform-specific macro, so it belongs in glibconfig.h.
This ensures that g-ir-scanner will not pick the wrong definition
for introspection.

https://bugzilla.gnome.org/show_bug.cgi?id=757294
2015-11-02 20:03:38 +02:00
Xavier Claessens
df352203d6 Stop using g_sequence_get_length() to check if it's empty
g_sequence_is_empty() is more efficient for that task.

https://bugzilla.gnome.org/show_bug.cgi?id=756988
2015-10-30 11:35:28 -04:00
Xavier Claessens
2bc32606c7 GSequence: document that _get_length() is not O(1)
https://bugzilla.gnome.org/show_bug.cgi?id=756988
2015-10-30 11:35:27 -04:00
Xavier Claessens
2331437df3 Doc: fix some gtk-doc warnings
https://bugzilla.gnome.org/show_bug.cgi?id=755364
2015-10-30 10:30:55 -04:00
Allison Ryan Lortie
7dd9ffbcff tests: test bounds-checked int arithmetic
Add some simple testcases for the new bounds-checked integer arithmetic
helpers.

Include a second build of the testcase to make sure we test the fallback
code even if we are on a compiler that supports the intrinsics.

https://bugzilla.gnome.org/show_bug.cgi?id=503096
2015-10-30 11:58:49 +01:00
Allison Ryan Lortie
d0219f2597 GLib: add bounds-checked unsigned int arithmetic
Add some helpers for builds-checked unsigned integer arithmetic to GLib.
These will be based on compiler intrinsics where they are available,
falling back to standard manual checks otherwise.

The fallback case needs to be implemented as a function (which we do
inline) because we cannot rely on statement expressions.  We also
implement the intrinsics case as an inline in order to avoid people
accidentally writing non-portable code which depends on static
evaluation of the builtin.

For now there is only support for addition and multiplication for guint,
guint64 and gsize.  It may make sense to add support for subtraction or
for the signed equivalents of those types in the future if we find a use
for that.

https://bugzilla.gnome.org/show_bug.cgi?id=503096
2015-10-30 11:58:49 +01:00
Allison Ryan Lortie
89bda59170 macros: add dummy __has_builtin()
Add a dummy definition for Clang's __has_builtin() macro.  This will
allow us to use __has_builtin() unconditionally, in the same way as we
already do for __has_feature().

https://bugzilla.gnome.org/show_bug.cgi?id=503096
2015-10-30 11:58:49 +01:00
Chun-wei Fan
d52625a94a gwin32.c: Fix g_win32_check_windows_version() on 32-bit
The Windows API function RtlGetVersion() is actually a function that is
decorated by WINAPI (i.e. __stdcall), so we need to correct this so that
the symbol can be loaded correctly from ntdll.dll, so that we won't crash as
a result.  Should fix the crash due to stack overflow on 32-bit builds.

https://bugzilla.gnome.org/show_bug.cgi?id=756179
2015-10-27 09:28:10 +08:00
Chun-wei Fan
556705cb9c gwin32.c: Fix build on Visual Studio
ntdef.h is a header that is normally only shipped with MinGW, not Visual
Studio, which broke the build in commit 975cb91.  Fix this by including
winternl.h, which typedef's the NTSTATUS type in question on both Visual
Studio and MinGW/mingw-w64, as well as pre-2008 Visual Studio.

Clean up this inclusion part a little bit as well.
2015-10-24 11:05:27 +08:00
Dan Winship
af0a47701d gtypes.h: fix G_MAXUINT64 definition to use G_GUINT64_CONSTANT
(Noticed as part of https://bugzilla.gnome.org/show_bug.cgi?id=756550)
2015-10-23 11:38:31 -04:00
Ignacio Casal Quinteiro
50d704ab8f win32: make sure bytes_read/written is set to 0 on error
If we fail to PeekMessage or PostMessage we should make sure
that the output parameter bytes_read/written is set 0 instead
of being left uninitialized. This fixes an assertion in the io
channel call where the following invariant is checked:
(status == G_IO_STATUS_NORMAL) || (read_size == 0)
2015-10-23 10:34:50 +02:00
Robert Ancell
31c45cb6ae gkeyfile: Handle whitespace after boolean values
Ignore trailing whitespace when reading boolean values. Currently it is
very easy to manually edit a keyfile to be:

[section]
key=true_

Where '_' is a space character. g_key_file_get_boolean will read this value as
false and this is hard for a user to detect (it will be reported in GError
as an invalid value).

Trailing whitespace is ignored for numbers for the same reason. This was
fixed in 7a45dde4fe64b4f6c6d3ebc54dfb54d106290e9d.

https://bugzilla.gnome.org/show_bug.cgi?id=664740
2015-10-21 15:26:53 +13:00
Robert Ancell
51ed0f0405 gkeyfile: Test that whitespace is allowed after numbers
Test that whitespace is allowed after numbers - this was fixed in
commit 7a45dde4fe64b4f6c6d3ebc54dfb54d106290e9d.
2015-10-21 15:26:17 +13:00
Sebastian Dröge
975cb91085 win32: Include ntdef.h for NTSTATUS
https://bugzilla.gnome.org/show_bug.cgi?id=756875
2015-10-20 20:47:07 +03:00
Ryan Lortie
419f57137a GDateTime test: fix occasional failures
We were using the time() library call to get the current time from the
system in order to compare it to the time returned by
g_date_time_new_now().

Of course, we took care to ensure that the time (in seconds) didn't
change in the middle of this process by checking the before and after
value of the system time.

Unfortunately, the system time as measured by time() was being taken
from a less-accurate clock source than the time used by GDateTime.  As a
result, we could have GDateTime already into the next second while the
"seconds" value of the time returned by time() was still in the last
one, even when checked "after".

Avoid the problem by using the same ultimate source for time --
g_get_real_time().

This is based on a similar patch from Iain Lane, but it uses
g_get_real_time() instead of g_get_current_time().

https://bugzilla.gnome.org/show_bug.cgi?id=754994
2015-10-16 12:10:50 +01:00
Mikhail Zabaluev
75eaf5091c g_main_context_query(): Annotate @n_fds as (in) parameter
The default is picked up as (out), which is bogus.

https://bugzilla.gnome.org/show_bug.cgi?id=756099
2015-10-15 23:57:06 +03:00
Mikhail Zabaluev
05aafe2cff gtypes.h: Make G_MININTn literals negative
This is more friendly to the GIR scanner; with previous definitions,
the constant values end up out of range for their stated integer type.

https://bugzilla.gnome.org/show_bug.cgi?id=756550
2015-10-15 23:47:04 +03:00
Christian Hergert
01baf39685 sequence: fix style issue in previous commit
Use g_assert_true() rather than integer comparison in sequence unit test.
2015-10-15 13:07:27 -07:00
Christian Hergert
8fccf8e4e3 sequence: add g_sequence_is_empty()
This function provides an O(1) check to determine if a sequence is empty.
Compare this to the two following alternatives to perform the same check.

O(h):  if (0 == g_sequence_get_length (seq))
O(2h): if (g_sequence_get_begin_iter(seq) == g_sequence_get_end_iter(seq))

Where `h' is the height of the tree.

https://bugzilla.gnome.org/show_bug.cgi?id=756316
2015-10-15 12:54:09 -07:00
Ignacio Casal Quinteiro
0b84596f6e gnulib: forgot some changes from HAVE_LONG_LONG_INT to HAVE_LONG_LONG
https://bugzilla.gnome.org/show_bug.cgi?id=756382
2015-10-15 17:42:02 +02:00
Ignacio Casal Quinteiro
212e4232e7 Update gnulib
It updates it to the version c5d07ce91a8ad51591154450442fa4376441fdfa
As a difference with upstream we need to ensure:
 * Include "g-gnulib.h" so the methods get the gnulib namespace.
 * xsize.h uses G_MAXSIZE instead of SIZE_MAX and the methods are
   marked as static inline.
 * Some defines are named different from the ones in glib i.e
   HAVE_LONG_LONG_INT is HAVE_LONG_LONG

All the unit tests pass properly with and without --enable-included-printf.
It has also been tested on Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=756382
2015-10-15 14:54:42 +02:00
Ignacio Casal Quinteiro
fb9df27776 Change message system to use fputs instead of write
By default g_log_default_handler always assumes that stdout
and stderr are file descriptors 1 and 2. On Win32 this isn't
always the case as the win32 API functions AttachConsole and
freopen can be used to dynamically attach GUI applications to
a console and the file descriptors of stderr and stdout will
become different than 1 and 2.

Fix it by using fputs with the FILE directly instead of
using the file descriptors.

https://bugzilla.gnome.org/show_bug.cgi?id=692085
2015-10-08 17:32:29 +02:00
Emmanuele Bassi
99ff9bb5e0 Maintain the struct order when initializing
Otherwise it'll break every GLIB_PRIVATE_CALL user.
2015-10-08 12:32:58 +01:00
Philip Withnall
0cc8c0f3e1 gerror: Add (optional) annotation to g_propagate_error()
Also clarify in the documentation that @src must be non-%NULL.
2015-10-08 11:16:02 +01:00
Philip Withnall
2e078f1fc0 gstrfuncs: Add missing annotations to g_[ascii_]strto*() functions
Add missing (out) (transfer none) (optional) annotations to g_strtod(),
g_ascii_strtod(), g_ascii_strtoull() and g_ascii_strtoll().
2015-10-08 11:10:39 +01:00
Matthias Clasen
e0dce8a9ae Export glib_init via GLIB_PRIVATE_CALL
This will be used in the next commit to call glib_init from the
gobject constructor, to ensure proper constructor ordering with
non-GNU libc.

https://bugzilla.gnome.org/show_bug.cgi?id=756139
2015-10-07 23:39:29 -04:00
Matthias Clasen
342d329685 Make glib_init safe to call more than once
This will be needed to fix constructor order for non-GNU libc.

https://bugzilla.gnome.org/show_bug.cgi?id=756139
2015-10-07 23:39:29 -04:00
Chun-wei Fan
46a20470fa gwin32.c: Avoid deprecated Win32 API usage
The VerifyVersionInfo() Win32 API has been deprecated in Windows 10, and
there is no direct replacement for it, except by using a lower-level
RtlGetVersion() that we aquire from the Windows DDK or from ntdll.dll.

Switch g_win32_check_windows_version() to use RtlGetVersion(), and
compare its results with the input parameters.

https://bugzilla.gnome.org/show_bug.cgi?id=756179
2015-10-07 20:46:31 +08:00
Marc-André Lureau
f91d1a2a76 docs: misc spelling 2015-10-05 15:33:05 +02:00
Marc-André Lureau
dabf662788 testutils: remove internal ABI comment
Some testutils external symbols are marked semi-internals, other
internals. It is not obvious what guarantees these symbols provide.
However, tests are now installable, and require the ABI stability
that glib provides for the rest of the symbols.

In my case, I would like to introduce g_assert* compat code for older
glib versions, and be able to use the so-called "internal" ABI.

I propose this change to the headers comments to explain the stability
guarantees. Removing the "internal" = you must not use this, in favor
of semi-internal = this is not documented.

https://bugzilla.gnome.org/show_bug.cgi?id=756077
2015-10-05 15:32:41 +02:00
Matthias Clasen
f9d9f9c056 Update to Unicode 8.0
Regenerate data tables from the Unicode Character Database, add
new scripts, and update tests to include some of the new data.
2015-10-04 10:24:06 -04:00
Philip Withnall
58ec667480 gkeyfile: Remove dead code and unused string literals
In all these functions, group_name is guaranteed to be non-NULL by the
function preconditions, so there is no need to handle it as NULL when
building error messages. Remove some unnecessary string literals as a
result.

Coverity CID: 1325438–1325441
2015-10-03 23:31:44 +01:00
Mikhail Zabaluev
0448e758cf Skip g_bytes_new_with_free_func() in introspection
The tricky ownership/mutability semantics on data make this function
unusable in introspection.

https://bugzilla.gnome.org/show_bug.cgi?id=755961
2015-10-01 21:15:22 -04:00
Mikhail Zabaluev
1e1e6c1086 gbytes: fix up annotations
Annotate array elements as bytes.
Annotate a missed output parameter.
Replace (allow-none) with the corresponding modern annotations.

https://bugzilla.gnome.org/show_bug.cgi?id=755961
2015-10-01 21:14:54 -04:00
Ryan Lortie
56b164a195 g_variant_get_child(): flatten-first logic on '&'
Copy the flatten-first logic from g_variant_get(), and for the same
reason: if the user is requesting a direct pointer access to a
tree-based child inside of argument to this function then that child
could disappear later.

Forcing serialisation means that the pointer will remain valid as long
as the passed-in instance exists, which is the usual expectation with
GVariant API.

https://bugzilla.gnome.org/show_bug.cgi?id=755374
2015-09-29 10:17:28 -04:00
Nicolas Dufresne
b36b4941a6 glib: Add 2.48 availibity macros
https://bugzilla.gnome.org/show_bug.cgi?id=755766
2015-09-29 08:26:13 -04:00
Philip Withnall
de04fd1304 gerror: Document the disadvantages of using GError
And move the discussion to a new subsection in the GError documentation.
Follow-up from commit 04662a8667c8bf0a594f0c6db7291066c272ad38.

https://bugzilla.gnome.org/show_bug.cgi?id=743011
2015-09-28 13:32:36 +01:00
Philip Withnall
04662a8667 gerror: Document advantages of GError over numeric error codes
Despite knowing about GError, there are multiple cases where developers
have still used traditional numeric error codes, and then got themselves
into a mess about bindability and generation of error messages.

Try and avoid this by including a brief paragraph on the benefits of
GError over EINVAL-style error codes.

https://bugzilla.gnome.org/show_bug.cgi?id=743011
2015-09-28 13:04:25 +01:00
Philip Withnall
5ceaeef832 gerror: Add an extra heading to the GError documentation
This means that the top of the documentation can link forward to this
important section, and random people on the internet can link directly
to it on developer.gnome.org.

https://bugzilla.gnome.org/show_bug.cgi?id=743011
2015-09-28 13:04:25 +01:00
Matthias Clasen
2d7817887a Revert "list store: Fix a parameter check"
This reverts commit d28639507db2029b8f184a5d93e9d8c28acc1955.

This wasn't meant to go in.

https://bugzilla.gnome.org/show_bug.cgi?id=755496
2015-09-23 18:55:28 -04:00
Xavier Claessens
b81f3ced71 Move GStrv typedef to glib.h instead of gobject.h
GStrv was historically only needed for the boxed G_TYPE_STRV,
but it is now useful for g_auto(GStrv) as well. This is not
an ABI change.

https://bugzilla.gnome.org/show_bug.cgi?id=755355
2015-09-22 11:18:30 -04:00
Emmanuele Bassi
ab26dd5433 Revert use of the system_header GCC pragma
This reverts commit 662bf991c08b16dea8a36026243b311f6cdb17f1. It is not
a straight up revert because the old commit involved various long since
removed ChangeLog files and we'd end up mudding the patch.

The system_header GCC pragma is breaking warnings in the various
g_return_* macros; GCC stopped warning when using a macro with a return
value in a function that returns void, as well as when using a macro
with no return value in a function that has a non-void return value.
Suppressing this kind of warnings is not a good idea.

Other compilers are unaffected, even ones like Clang with a GCC
compatibility layer.

Given the fact that the original commit was added 14 years ago as a
workaround in the old days of GTK+ 1.2, I think it's safe to drop it.

https://bugzilla.gnome.org/show_bug.cgi?id=753310
2015-09-22 15:14:14 +01:00
Xavier Claessens
d488d75909 Remove useless NULL check before g_free() 2015-09-22 09:43:47 -04:00
Xavier Claessens
9348af3651 Doc: g_autoptr(gchar) has been replaced by g_autofree
https://bugzilla.gnome.org/show_bug.cgi?id=755351
2015-09-21 10:47:50 -04:00
Xavier Claessens
3ffed912c1 doc: small clarification in g_autoptr()
https://bugzilla.gnome.org/show_bug.cgi?id=755077
2015-09-21 08:38:33 -04:00
Matthias Clasen
2bc094264b Documentation fixups
Various parameter fixups and symbol list additions.
2015-09-21 06:44:58 -04:00
Mikhail Zabaluev
67c5bbaf03 glib/tests/utf8-validate: test known-length case along with null-terminated
For all test cases where the text length is given as -1, also
call g_utf8_validate() with the actual string length to exercise
the known-length case. Unknown-length and known-length validation
use different code paths, but most of the tests only exercised with
unknown-length parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=754924
2015-09-13 13:12:25 -04:00
Mikhail Zabaluev
8ab28b448b glib/tests/utf8-validate: add another test for invalid continuation bytes
This would have caught the regression committed in the course of
bug #738504.
2015-09-13 13:04:59 -04:00
Mikhail Zabaluev
d1f4d4a91a g_utf8_validate: fix a regression
A recent change permitted some characters from range 0x80-0xbf as
would-be valid sequence starters for length 2, as long as
continuation characters were OK.

https://bugzilla.gnome.org/show_bug.cgi?id=738504
2015-09-13 13:04:59 -04:00