4791 Commits

Author SHA1 Message Date
Dan Winship
eec507c159 g_str_has_prefix: don't call strlen(str)
There's no reason to check the length of @str in g_str_has_prefix(),
since if it's shorter than @prefix, the strncmp() will fail anyway.
And besides making the function less efficient, it also breaks code
like:

    if (buf->len >=3 && g_str_has_prefix (buf->data, "foo"))
      ...

which really looks like it ought to work whether buf->data is
nul-terminated or not.

https://bugzilla.gnome.org/show_bug.cgi?id=727890
2014-04-10 10:10:24 -04:00
David King
3cfa44da5a docs: Fix typo in g_unichar_iswide_cjk() comment 2014-04-04 10:43:29 +01:00
Dan Winship
3da5d59078 gio: move Winsock error mapping to g_io_error_from_win32_error()
Rather than having special code in gsocket.c, handle Winsock errors
along with other Win32 errors in gioerror.c

Also, reference g_win32_error_message() from the
g_io_error_from_win32_error() docs, and update the
g_win32_error_message() docs to clarify that it works with Winsock
error codes too.
2014-03-30 11:55:47 -04:00
Volker Sobek
a0b932ac8b docs: Remove escaping '\' from literals
commit 35066ed6c6b51317f49069f2564c547aa309f9f1 replaced entities, but
escaped the replacement text also inside literals, which resulted in the
escaping '\' to also appear in the documentation.

https://bugzilla.gnome.org/show_bug.cgi?id=727320
2014-03-30 08:37:23 -04:00
Dan Winship
31694f9ccb Bump version to 2.41.0, add GLIB_VERSION_2_42, etc 2014-03-29 12:54:29 -04:00
Dan Winship
c67d23aa2f Clarify expectations with error codes like G_IO_ERROR_FAILED
If an error code enumeration is expected to be extended in the future,
people shouldn't compare explicitly against its generic "FAILED" value.

https://bugzilla.gnome.org/show_bug.cgi?id=726775
2014-03-20 09:31:56 -04:00
Giovanni Campagna
b22f02a94b Unskip GVariantDict
There is no reason to (skip) GVariantDict, it's a boxed type
and perfectly usable from gobject-introspection.

https://bugzilla.gnome.org/show_bug.cgi?id=725656
2014-03-05 17:14:14 +01:00
Ryan Lortie
c9cda16a4f cond test: remove alarm() usage
This means that the test can't build on Windows (and we do want it there).

This will be properly resolved with bug 725266, but let's not block the
build before then.

https://bugzilla.gnome.org/show_bug.cgi?id=724859
2014-03-05 09:05:42 -05:00
Matthias Clasen
79caa3a7e1 Add a few tests for G_MARKUP_TREAT_CDATA_AS_TEXT
Related to
https://bugzilla.gnome.org/show_bug.cgi?id=725433
2014-03-02 19:10:00 -05:00
Matthias Clasen
b93a13bb79 Add a way to test different markup parser flags
For now, we are mainly interested in G_MARKUP_TREAT_CDATA_AS_TEXT.
This commit makes markup-parse look for expected output files with
the extension .cdata-as-text in addition to .expected, and compares
the output of parsing with G_MARKUP_TREAT_CDATA_AS_TEXT against
them. markup-parse --cdata-as-text foo.gmarkup can be used to produce
such expected output.
2014-03-02 19:03:15 -05:00
Matthias Clasen
49cc207e35 docs: Ditch more markup
Some markup was hiding in docs in headers. Drop it there, too.
2014-03-02 18:23:43 -05:00
Philip Withnall
fdf14e9e6c hmac: Make unit test const-correct
https://bugzilla.gnome.org/show_bug.cgi?id=724741
2014-02-24 16:38:08 +00:00
Ryan Lortie
393503ba5b gmain: simplify g_main_context_find_source_by_id()
Since we now keep a hashtable of sources, we can implement this function
without iteration.

https://bugzilla.gnome.org/show_bug.cgi?id=724839
2014-02-24 09:28:43 -05:00
Ryan Lortie
9e81709012 gmain: Simplify source id tracking
Simplify our tracking of issued source id integers and fix some bugs.

Previously the source's id was remove from the 'used' table from
source_remove_from_context() which was also called if the source
priority was changed (in which case it would never be added back to the
table).  The source id could be reissued in that case.

In the new approach, we just always keep a hash table of sources, by
source id.  This simplifies the logic and will also allow us to improve
performance of g_main_context_find_source_by_id() which is called in some
fairly common cases, such as g_source_remove().  These improvements will be in
the following commits.

https://bugzilla.gnome.org/show_bug.cgi?id=724839
2014-02-24 09:28:43 -05:00
Ryan Lortie
356fe2cec6 asyncqueue: fix timeout math on 32bit systems
88182d375e13ae6519a288d5295220c83ca27e73 caught this issue in
g_async_queue_timed_pop() but failed to fix the same bug in the _unlocked()
variant.

This is only a problem on 32bit systems.  On 64bit systems, the tv_sec
in a timeval is already 64 bits, so no overflow occurs.

https://bugzilla.gnome.org/show_bug.cgi?id=722604
2014-02-23 01:14:27 -05:00
Ryan Lortie
4af9b8e9cb mappedfile test: permit ENODEV on /dev/null
mmap() on /dev/null returns ENODEV on old Linux versions and also on
Hurd, so accept that in the testcase.

https://bugzilla.gnome.org/show_bug.cgi?id=722360
2014-02-23 00:47:29 -05:00
Ryan Lortie
12d65f2509 GSource: mark some API as "implementation only"
Clarify that _add_poll() _remove_poll() _add_unix_fd(),
_modify_unix_fd(), _remove_unix_fd(), _query_unix_fd(),
_set_ready_time(), _add_child_source() and _remove_child_source() are only
intended to be used by the implementation of a particular GSource -- not its
consumers.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:25:06 -05:00
Ryan Lortie
6147d15ea2 gmain: repeat preconditions for emphasis
g_main_context_acquire() mentions that you must have called it before
you make any calls to _prepare(), _query(), _check() or _dispatch().

For emphasis, add a note on each of those functions pointing back to the
fact that you must have called _acquire() before using them.
2014-02-22 10:23:40 -05:00
Ryan Lortie
c0aa150cb0 g_main_context_wait: add a critical to detect use
Due to its unusual interface, I suspect that nobody is using
g_main_context_wait() but there is no way to know.

Add a critical notice that will be displayed if anyone calls the
function, asking them to file a bug with us.

We'll let this go out with the 2.40 release and see if we get a response
before we proceed with actually breaking the functionality.
2014-02-21 16:42:21 -05:00
Ryan Lortie
5103c5d643 GCond: check result of pthread_condattr_setclock()
Make sure this call succeeds, aborting if it doesn't

This will prevent people from having to waste time chasing down the problems
that would otherwise be caused by this silent failure.
2014-02-21 16:42:21 -05:00
Ryan Lortie
03a43c290e gmain: abort if monotonic time is unsupported
We now depend on CLOCK_MONOTONIC, but it's possible that people may
attempt to run GLib on systems where it isn't supported at runtime.

Check the return value of clock_gettime() and abort() if it fails in
order to save these people from wasting time on debugging a tricky
issue.

https://bugzilla.gnome.org/show_bug.cgi?id=670144
2014-02-21 16:42:21 -05:00
Xavier Claessens
6fcaa7aa96 GHashTable: Explicitly document that _iter_remove() is safe while iterating
https://bugzilla.gnome.org/show_bug.cgi?id=723316
2014-02-21 15:39:31 -05:00
Chun-wei Fan
450363321d glib/Makefile.am: Dist gtranslit-data.h
This header needs to be distributed as well, which was
inadvertently missed.

https://bugzilla.gnome.org/show_bug.cgi?id=724858
2014-02-21 23:37:31 +08:00
Ryan Lortie
061793a726 gconvert: add note to avoid transliteration
Add a note to the documentation of g_convert() advising to avoid using
it for transliteration.  Link to g_str_to_ascii().
2014-02-20 18:52:33 -05:00
Ryan Lortie
0415930b49 gsource: document priority of child sources
Add a note to the documentation that child sources cannot have their priority
changed independently from their parent.  Add a g_return_if_fail() to the
public API in order to enforce this.

This was already a reality due to the check in
g_source_set_priority_unlocked(), but it was never explicitly documented.

https://bugzilla.gnome.org/show_bug.cgi?id=724706
2014-02-20 18:32:42 -05:00
Ryan Lortie
8491f03581 g_str_to_ascii(): a couple of minor tweaks
Add a precondition guard and use g_string_sized_new() to avoid some
reallocations.
2014-02-20 18:32:42 -05:00
Ryan Lortie
a8ea3dc03b g_str_tokenize_and_fold: do proper transliteration
g_str_tokenize_and_fold() can now do proper locale-sensitive
transliteration for ascii alternatives.

https://bugzilla.gnome.org/show_bug.cgi?id=710142
2014-02-20 18:27:48 -05:00
Ryan Lortie
d7291760df tests: test transliteration API
Add some tests for the new transliteration API.

https://bugzilla.gnome.org/show_bug.cgi?id=710142
2014-02-20 18:27:24 -05:00
Ryan Lortie
941b8979d0 Add locale-sensitive ASCII transliteration API
Add a new function, g_str_to_ascii() that does locale-dependent ASCII
transliteration of UTF-8 strings.

This function works off of an internal database.  We get the data out of
the localedata shipped with glibc, which seems to be just about the best
source of locale-sensitive transliteration information available
anywhere.

We include a update script with this commit that's not used by anything
at all -- it will just sit in git.  It is intended to be run manually
from time to time.

https://bugzilla.gnome.org/show_bug.cgi?id=710142
2014-02-20 18:27:24 -05:00
Ryan Lortie
436d77f70a tests: add a test for g_cond_wait_until()
https://bugzilla.gnome.org/show_bug.cgi?id=673607
2014-02-20 17:57:57 -05:00
Ryan Lortie
1de36e7755 Fix g_cond_wait_until() vs. monotonic time
We've had a relatively rocky path with g_cond_wait_until() on systems
that either don't support pthread_condattr_setclock() or where
g_get_monotonic_time() is not based on CLOCK_MONOTONIC (ie: Android and
Mac OS).

Fortunately, both of these platforms seem to share
pthread_cond_timedwait_relative_np() which allows us to implement
g_cond_wait_until() without races.

With this patch, we now require that one of pthread_condattr_setclock()
or pthread_cond_timedwait_relative_np() exists.  A quick look around
suggests that this is true for all platforms that we care about.

This patch removes our use of pthread_cond_timedwait_monotonic() and
pthread_cond_timedwait_monotonic_np() which were Android-only APIs.

https://bugzilla.gnome.org/show_bug.cgi?id=673607
2014-02-20 17:55:09 -05:00
Ryan Lortie
d614312546 gmain: rework g_get_monotonic_time() a bit
We now assume the existence of clock_gettime() and CLOCK_MONOTONIC as
specified by POSIX.1-2001.  This means that we always return truly
monotonic time, which will prevent problems in the case that the user
changes the time.

Mac OS doesn't have clock_gettime() but it does have
mach_absolute_time(), so we can use that there.

We keep our Windows case as well (although we should simplify it once XP
hits EOL later this year).

This patch removes the fallback to gettimeofday() in case of missing
clock_gettime().  We no longer have any way to test this codepath and
therefore it must go.

This patch also restructures the #ifdef a bit so that we repeat the
entire function definition inside of #ifdef instead of just the entire
body of one function.

https://bugzilla.gnome.org/show_bug.cgi?id=724687
2014-02-20 17:52:49 -05:00
William Jon McCann
20f4d1820b docs: use "Returns:" consistently
Instead of "Return value:".
2014-02-19 19:41:52 -05:00
Dan Winship
5a4478664b gtestutils: make the new assert messages more detailed
g_assert_true(), g_assert_false(), g_assert_null(), and
g_assert_nonnull() simply printed out the expression they were
checking, without any further explanation of what went wrong. (In
particular, "g_assert_true(x)" and "g_assert_false(x)" would both
print the same thing on failure.) Add a little bit more context.

https://bugzilla.gnome.org/show_bug.cgi?id=724385
2014-02-17 11:33:37 -05:00
Ryan Lortie
7cbff954b9 win32: fixup lib.exe invocation
We have a configure.ac check for lib.exe that attempts to enable
creation of .lib files for our 5 public libraries.  That has been broken
for a long time for two reasons:

 1) the Makefiles hardcode 'lib' instead of 'lib.exe'

 2) we dropped generation of .def files quite some time ago (except for
    in gthread where we have the two-symbol file under version control)

Add new rules for creating .def files from dumpbin.exe (which you should
have if you have lib.exe) and fix the .lib rules to use lib.exe.

Add a bit of $(AM_V_GEN) all around, as well.

https://bugzilla.gnome.org/show_bug.cgi?id=722033
2014-02-15 16:55:25 -05:00
Ryan Lortie
08533cae05 only '#pragma GCC' outside of functions
Don't use #pragma GCC inside of function scope.

https://bugzilla.gnome.org/show_bug.cgi?id=724417
2014-02-15 10:31:52 -05:00
Matthias Clasen
d690b3dcd0 docs: Remove a few trailing <literal>s 2014-02-14 21:49:42 -05:00
Matthias Clasen
bcab7ba002 docs: Remove some unneeded decorations
@var is not expanded inside literal `` blocks.
Just remove those @ characters.
2014-02-14 21:39:11 -05:00
Matthias Clasen
bc6ee788b4 docs: let go of &ast;
Since we are no longer using sgml mode, using /&ast; &ast;/ to
escape block comments inside examples does not work anymore.
Switch to using line comments with //
2014-02-14 21:33:36 -05:00
Simon McVittie
0f5577de57 g_test_run: return 0 if all tests are skipped in TAP mode
Exit status 77 is special to Automake's default test driver, but is
treated as an error by TAP.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724124
Reviewed-by: Dan Winship <danw>
2014-02-13 14:31:27 +00:00
Simon McVittie
ffa5fab09a glib/tests/collate.c: run to completion when skipping all tests
Otherwise, we don't produce valid TAP output, and fail with:

    ERROR: collate - missing test plan

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724124
Reviewed-by: Dan Winship <danw>
2014-02-13 14:31:09 +00:00
Simon McVittie
125913e9fe g_child_watch_source_new: POSIX pid must be positive
If we used a non-positive pid, we'd call waitpid(that_pid, ...)
which is exactly the situation this function can't deal with.

On Windows, GPid is a HANDLE (pointer), so I don't think the same thing
applies.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=723743
Reviewed-by: Ryan Lortie
2014-02-11 15:02:16 +00:00
Simon McVittie
a3cb5ce33b Be more clear that g_return_if_fail is undefined behaviour
In particular, it is not incorrect to g_return_if_fail (..., FALSE)
in a function returning a "success" gboolean and a GError: "failure to
meet the preconditions is an error" takes precedence over the
GError documentation's guarantee that the error will be set on failure.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660809
Reviewed-by: Emmanuele Bassi
2014-02-11 15:01:58 +00:00
Matthias Clasen
c158a9cdcb Fix a misformatting in GVariant docs
The + at the beginning of the line was misinterpreted
as markdown for a list.
2014-02-09 02:12:53 -05:00
Matthias Clasen
35066ed6c6 Docs: Drop entities, switch away from sgml mode
Since all element markup is now gone from the doc comments,
we can turn off the gtk-doc sgml mode, which means that from
now on, docbook markup is no longer allowed in doc comments.

To make this possible, we have to replace all remaining
entities in doc comments by their replacement text, &amp; -> &
and so on.
2014-02-09 02:07:26 -05:00
Matthias Clasen
5acd7b01de Remove some informalexamples 2014-02-08 15:50:17 -05:00
Matthias Clasen
a59e3d69b4 Another stray <programlisting> 2014-02-08 15:34:04 -05:00
Matthias Clasen
c4991d24ee Strip out a remaining programlisting 2014-02-08 15:19:24 -05:00
Matthias Clasen
ebc4347b2c Docs: Remove an example tag that has snuck back in 2014-02-08 13:55:27 -05:00
Matthias Clasen
03b21a19ec Docs: convert another table to a list 2014-02-08 13:47:02 -05:00