Commit Graph

5150 Commits

Author SHA1 Message Date
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 04662a8667.

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 d28639507d.

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 662bf991c0. 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
Matthias Clasen
b9a27679ec Revert "Cleanups after we dropped mem vtables"
This reverts commit 627854fee1.

It has been argued that not aborting on malloc() failure is
an incompatible change.
2015-09-12 12:05:31 -04:00
Matthias Clasen
c90f283be3 Speed up g_dataset_id_dup_data
This code is used in the property notification path, so it
better be fast. This commit removes a g_return_if_fail check and
treats the common case of just a single data element better.
2015-09-12 11:13:45 -04:00
Matthias Clasen
59df5440f3 Drop g_slice_set_config tests
With g_quark_init, we are now calling GSlice from a constructor
(this was already the case when linking against gobject).
2015-09-12 11:13:45 -04:00
Matthias Clasen
2fe992b099 Move quark initialization to a constructor
This removes a branch from the very frequently called
quark functions.
2015-09-12 11:13:45 -04:00
Matthias Clasen
627854fee1 Cleanups after we dropped mem vtables
Since g_malloc is now always malloc, we can just use
strdup and strndup directly.
2015-09-12 11:13:45 -04:00
Matthias Clasen
97a25d1203 Optimize g_unichar_iswide
Apply the same optimization that was done for g_unichar_get_script
long ago: Use a quick check for the low end, and then remember the
midpoint of the last bsearch, since we're likely to be called for
characters that are close to each other.

This change made g_unichar_iswide disappear from profiles of the
gtk3-demo listbox example.
2015-09-12 11:13:44 -04:00
Dan Winship
96675446c5 Make g_strerror() do less work
Store the (translated, UTF-8-encoded) error strings in a hash table to
avoid doing translation and (possibly) g_locale_to_utf8() in every
g_strerror() call.

https://bugzilla.gnome.org/show_bug.cgi?id=754788
2015-09-11 12:39:44 -04:00
Dan Winship
19eb511ba4 More g_strerror() fixes
Add a check to configure.ac for strerror_r, since we don't currently
require POSIX.1-2001 conformance in general. Add back a
plain-strerror() case as a fallback, and rearrange the glibc-vs-POSIX
strerror_r() branches.

Update the docs to not claim that "not all platforms support the
strerror() function" (we require C90), but still mention the UTF-8 and
always-valid-string benefits. (And make test_strerror() check that
last part.)

https://bugzilla.gnome.org/show_bug.cgi?id=754788
2015-09-11 12:38:18 -04:00
Kalev Lember
d19411a76f autocleanups: Add GString type
https://bugzilla.gnome.org/show_bug.cgi?id=754831
2015-09-10 14:36:43 +02:00
Ting-Wei Lan
ebf961a58d Make g_strerror work with non-glibc POSIX systems
We should only use GNU-specific strerror_r on glibc. On other systems,
we should use the XSI-compliant version.

https://bugzilla.gnome.org/show_bug.cgi?id=754601
2015-09-07 15:18:01 -04:00
Matthias Clasen
23229bfd0c GString: Avoid some repeated parameter checking
Many of the append and prepend variants are just thin wrappers
around another one. Remove parameter checking in the wrapper
for these cases. The wrapped function is checking them anyway.
2015-09-07 10:35:13 -04:00
Matthias Clasen
03db1f455b Remove some unused code
The function unescape_gstring_inplace was maintaining a line count
without ever making use of it. Drop that.
2015-09-07 09:50:41 -04:00
Mikhail Zabaluev
401f78652c Reorganized utf8-performance tests
Now each function-string pair gets its own test path to track
a single performance result.

https://bugzilla.gnome.org/show_bug.cgi?id=738504
2015-09-05 13:14:11 -04:00
Mikhail Zabaluev
b963565125 Unrolled implementation of g_utf8_to_ucs4_fast()
Unrolling the branches and expressions for all expected cases
of UTF-8 sequences facilitates the work of both an optimizing compiler
and the branch prediction logic in the CPU. This speeds up decoding
noticeably on text composed primarily of longer sequences.

https://bugzilla.gnome.org/show_bug.cgi?id=738504
2015-09-05 13:12:48 -04:00
Mikhail Zabaluev
3188b8ee79 Optimized branching in g_utf8_validate()
The number of branches and logical operations can be reduced by
never producing a resulting wide character value to check its range.
Instead, individual bytes in the sequence are validated
depending on the branch taken on the basis of preceding bytes.
The syntax given in RFC 3629 is made use of.

https://bugzilla.gnome.org/show_bug.cgi?id=738504
2015-09-05 13:10:57 -04:00
Matthias Clasen
5644ee5083 markup: trivial refactor
Avoid an unnecessary branch.
2015-09-05 13:02:33 -04:00
Matthias Clasen
d28639507d list store: Fix a parameter check
Getting this wrong causes build failures.

https://bugzilla.gnome.org/show_bug.cgi?id=754582
2015-09-04 13:56:57 -04:00
Chun-wei Fan
041e77249a Cleanup and Enhance the MSVC Project Generation
Make use of the common autotools module that is used to generate the MSVC
project files from their respective templates so that the main build files
beccome cleaner, and enhance them in a way that the headers that should be
installed can be written to the property sheets during 'make dist', so that
the chances of missing headers for MSVC builds can be greatly reduced.

Also use this autotools module to fill in the projects for
glib-compile-schemas and glib-compile-resources.

https://bugzilla.gnome.org/show_bug.cgi?id=735429
2015-09-03 19:10:06 +08:00
Philip Withnall
7a65d1d3fb gmem: Fix a typo in the g_try_new0() documentation 2015-09-02 14:52:52 +01:00
Philip Withnall
b77fe970db gstring: Mark g_string_free() as taking (transfer full) input
This is unusual, but the correct annotation for a free() function.

https://bugzilla.gnome.org/show_bug.cgi?id=742903
2015-09-02 14:51:51 +01:00
Chun-wei Fan
4cad3f5e1b glib/strfuncs.c: Fix Build on Windows
Windows does not have strerror_r(), but does have strerror_s(), which is
threadsafe, and does more or less the same thing, so use it on Windows to
fix the build.

https://bugzilla.gnome.org/show_bug.cgi?id=754431
2015-09-02 17:03:44 +08:00
Dan Winship
9f2e3f6b72 gtestutils: add g_assert_cmpmem()
Add a test macro to compare two buffers (which are not already known
to be the same length) for equality.

https://bugzilla.gnome.org/show_bug.cgi?id=754283
2015-08-31 13:59:48 -04:00
Dan Winship
367f36d630 gtestutils: forbid having two tests with the same full path
In the same way that gtestutils used to let you create multiple suites
with the same name, it also let you create multiple tests with the
same name. Make that an error instead (and fix glib/tests/base64.c,
which was registering three separate tests named
"/base64/incremental/nobreak/4", and glib/tests/autoptr.c, which was
running test_g_variant_builder() twice).

https://bugzilla.gnome.org/show_bug.cgi?id=754286
2015-08-31 13:58:56 -04:00
Dan Winship
123ea70d74 gtestutils: improve non-TAP output, fix handling of incomplete tests
In non-TAP mode, tests that used g_test_skip() were labelled "OK", and
tests that used g_test_incomplete() were labelled "FAIL". Explicitly
show them as "SKIP" and "TODO" instead, like in the TAP case.

Also, incomplete/TODO tests are not supposed to be treated as
failures, so fix that too.

https://bugzilla.gnome.org/show_bug.cgi?id=754286
2015-08-31 13:58:56 -04:00
Dan Winship
6e382208f7 gtestutils: print the TAP test plan first, not last
TAP allows you to print the "test plan" (ie, the expected number of
tests" either at the start or the end of the test program, but if you
put it at the end, and the program crashes, automake will complain
"missing test plan", which is confusing to users (particularly since
it prints that *before* it prints that the test program crashed,
suggesting that somehow the lack of test plan was responsible for the
crash or something, rather than vice versa).

Anyway, change it to count the tests ahead of time, and print the test
plan first. Keeping this simple requires disallowing the '-p', '-s',
and '--GTestSkipCount' options when using '--tap' (although we were
already printing the wrong number in the --GTestSkipCount case
anyway).

https://bugzilla.gnome.org/show_bug.cgi?id=754284
2015-08-31 13:58:25 -04:00
Dan Winship
51c91ed53d gtestutils: move "/subprocess" path special-casing
https://bugzilla.gnome.org/show_bug.cgi?id=754284
2015-08-31 13:58:25 -04:00
Dan Winship
91ff2ba844 gtestutils: make g_test_suite_run{,internal} less confusing
Rewrite g_test_suite_run() and g_test_suite_run_internal() to make it
clearer what they do (while still preserving exact backward
compatibility, meaning we need to handle the "-p" case differently
from the non-"-p" case).

https://bugzilla.gnome.org/show_bug.cgi?id=754284
2015-08-31 13:58:25 -04:00
Dan Winship
510331bacf gtestutils: reorganize g_test_name manipulation
https://bugzilla.gnome.org/show_bug.cgi?id=754284
2015-08-31 13:58:25 -04:00
Matthias Clasen
30d95388e7 Test g_strerror some more
Set a locale here, so we actually do conversion, and also
run the loop far enough that we hit the 'unknown error' case.
2015-08-28 16:05:05 -04:00
Matthias Clasen
36fac0849c Make g_strerror threadsafe
We need to use strerror_r here, in order to be threadsafe.
2015-08-28 15:54:46 -04:00
Matthias Clasen
eb7ffccf44 test repeated g_hash_table_remove_all calls
I just came across a situation where code ended up stuck in
an infinite loop in GHashTable code, so lets verify that this
is a safe thing.
2015-08-28 14:15:54 -04:00
Philip Withnall
91a6ec8d07 gutils: Clarify return values of g_bit_nth_[lsf|msf]()
Clarify in the documentation that both functions return -1 if no high
bits could be found.
2015-08-25 10:49:06 +01:00
Michael Catanzaro
a6ae52fa13 docs: Fix a typo finalised -> finalized
db8455f07d added use of both "finalised"
and "finalized". We generally use American spelling, so prefer that.
2015-08-21 16:46:33 -05:00
Matthias Clasen
09b618f0a1 Avoid a false deprecation
gtk-doc misinterprets this comment and marks
g_find_program_in_path as deprecated, which it isn't.
2015-08-20 20:20:48 -04:00
Philip Withnall
5a642651c7 gmessages: Mention g_return_if_fail() in g_warning() and g_error() docs
It seems to be common for people to use g_warning() or g_error() as pre-
and post-condition error reporting functions, which is not really what
they’re intended for. Similarly, it is generally a sign of bad API
design to use g_warning() to report errors — use GError instead.

Try and suggest this to the user in the hope that nice code results.

https://bugzilla.gnome.org/show_bug.cgi?id=741779
2015-08-19 12:56:38 +01:00
Philip Withnall
db8455f07d gmain: Document memory management best practices for GSources
It’s very common to see code where a timeout is scheduled using
g_timeout_add(), yet the owning object could be destroyed shortly
afterwards, before the timeout is fired, leading to use-after-free.

Try and prevent this happening with new code by documenting best
practices for memory management of user data for GSource callbacks.

https://bugzilla.gnome.org/show_bug.cgi?id=741779
2015-08-19 12:56:38 +01:00