4797 Commits

Author SHA1 Message Date
Matthias Clasen
6fe85aee8d Improve fileutils test coverage
Add some tests for g_file_read_link.
2014-01-01 17:59:21 -05:00
Matthias Clasen
f16753cfe0 Unify error reporting in gfileutils.c
Use the set_file_error helper function in more places,
saving some 50 lines.
2014-01-01 17:59:21 -05:00
Ryan Lortie
56fb675d86 GVariant: add way to print context of parse errors
This was a feature intended from the very beginning that somehow never
got written.  It's a way to replace these sort of error messages out of
the GVariant parser:

  1-2,10-15:unable to find a common type

with something in the style of the Vala compiler:

  unable to find a common type:
    [1, 2, 3, 'str']
     ^        ^^^^^

https://bugzilla.gnome.org/show_bug.cgi?id=715028
2013-12-22 11:41:19 -05:00
Ryan Lortie
3f41e49285 Use POSIX-specified <poll.h> over <sys/poll.h>
POSIX specifies that <poll.h> is the correct header to include for
poll(), so let's do that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=141251
2013-12-22 11:33:07 -05:00
Murray Cumming
eeac91f866 GVariant: Add g_variant_parse_error_quark()
Most GErrors, such as GSomethingError, have a function to get
their quark that looks like g_something_error_quark(),
so bindings (such as gtkmm) would expect GVariantParseError
to have g_variant_parse_error_quark(). Instead this had
g_variant_parser_get_error_quark().
This deprecates the old function and adds the correct one,
making life easier for gtkmm (and maybe others).

https://bugzilla.gnome.org/show_bug.cgi?id=708212
2013-12-22 11:27:16 -05:00
Dan Winship
fab0805b81 Make g_test_run() return 77 if all tests are skipped
Change g_test_run() to return 1 on failure (rather than the number of
failed tests), and 77 if all tests are skipped (since automake and
some other test harnesses recognize that status code).

Previously g_test_run() returned the number of failed tests, but this
behavior was not documented, and at any rate, prior to 2.39,
g_test_run() would normally not return at all if an error occurred.

https://bugzilla.gnome.org/show_bug.cgi?id=720263
2013-12-18 10:09:46 -05:00
Dan Winship
10d82f9775 gtestutils: rename test_skip_count to test_startup_skip_count
https://bugzilla.gnome.org/show_bug.cgi?id=720263
2013-12-18 10:09:46 -05:00
Dan Winship
8c188fc9e5 gtestutils: skipping a test should count as success, not failure
In particular, the test program as a whole should exit with status 0
if you skipped some tests but did not fail any.

https://bugzilla.gnome.org/show_bug.cgi?id=720263
2013-12-18 09:26:54 -05:00
Tim Lunn
d33f72097f Make gdb pretty-printers compatible with Python3
On some systems gdb is linked against python3 where "long" no longer
exists. In this case should be using int.

https://bugzilla.gnome.org/show_bug.cgi?id=720635
2013-12-18 07:22:16 +11:00
Ryan Lortie
6c8600b2b8 valgrind.h: add "r0" to the clobber list on PPC
Looks like the magic sequences trash this register, so make sure GCC
knows that.

https://bugzilla.gnome.org/show_bug.cgi?id=710983
2013-12-16 14:55:28 -05:00
Ryan Lortie
2731b01c73 tests: change test timezone to America/Toronto
America/Toronto is the canonical name for Canada/Eastern in the zoneinfo
database.
2013-12-16 14:55:12 -05:00
Matthias Clasen
c34cc2348c Simplify subprocesses in tests
Use the new way of running tests in a subprocess without
registering extra 'subprocess' test cases where appropriate.
2013-12-15 11:50:00 -05:00
Stef Walter
cd2204bb65 gtestutils: Allow clean simple use of g_test_trap_subprocess()
Allow g_test_trap_subprocess() to be used in a simple cases by
rerunning the same test case itself. This is accomplished by
passing %NULL as the test case name.

https://bugzilla.gnome.org/show_bug.cgi?id=720236
2013-12-15 11:03:17 -05:00
Matthias Clasen
162852d1b5 Add a testcase for g_ptr_array_insert 2013-12-14 23:54:18 -05:00
Tristan Van Berkom
9ed0d0c509 GPtrArray: Added g_ptr_array_insert()
Speaks for itself, I've found myself on numerous occasions
writing my own version of this, or using a GArray of pointers.

https://bugzilla.gnome.org/show_bug.cgi?id=719395
2013-12-14 23:41:44 -05:00
Chun-wei Fan
6011d0a4ae glib/gwin32.c: Silence a Deprecation Warning
Since we are already building a deprecated function for compatibility
reasons, we don't really need to see a warning when it uses another
deprecated GLib function.
2013-12-13 16:21:00 +08:00
Matthias Clasen
d721d41d38 Remove an unused define
https://bugzilla.gnome.org/show_bug.cgi?id=720210
2013-12-11 10:36:26 -05:00
Ryan Lortie
a22f77739d g_get_current_dir(): consult PWD first
Check if the current directory is the same as $PWD.  This matches the
behaviour of the get_current_dir_name() function in glibc.

https://bugzilla.gnome.org/show_bug.cgi?id=705902
2013-12-09 12:10:16 -05:00
Ryan Lortie
05f36e7ffc clang fixes: tweak last commit
We need to actually ignore "-Wformat-nonliteral" to make clang happy
2013-12-08 16:38:47 -05:00
Ryan Lortie
ddf82a2576 [PATCH] Fix trivial non literal format uses
Based on a patch from Henrique Dante de Almeida <hdante@gmail.com>.

https://bugzilla.gnome.org/show_bug.cgi?id=691608
2013-12-08 14:22:51 -05:00
Marc-André Lureau
b2bf13ccdd gutf8: use g_try_malloc_n
As recommended by Christian Persch.

https://bugzilla.gnome.org/show_bug.cgi?id=711546
2013-12-03 15:56:47 +01:00
Marc-André Lureau
bff76bc36f gmessages: make _g_log_abort() do only breakpoints again
Commit e53caad4 makes _g_log_abort() noreturn by calling abort()
unconditionally.

However, it is useful to be able to skip some log_abort() with a
debugger, to reach a point of interest. Revert back to previous
behaviour. Make g_assert_warning() noreturn by calling abort().

https://bugzilla.gnome.org/show_bug.cgi?id=711800
2013-12-03 15:56:47 +01:00
Matthias Clasen
d6af3c63c9 Add a test for g_atexit 2013-11-28 21:58:25 -05:00
Matthias Clasen
555d40eeed Improve search utils test coverage
This adds test cases for the Turkish i.
2013-11-28 16:01:23 -05:00
Matthias Clasen
ec393a3009 Improve GKeyFile test coverage 2013-11-28 16:01:23 -05:00
Matthias Clasen
804c4fe1d3 Improve test coverage for GHashTable 2013-11-28 16:01:23 -05:00
Dan Winship
e53caad4f1 Fix a warning about _g_log_abort()
G_BREAKPOINT is not noreturn, so make it so that we abort() if it
returns, to make _g_log_abort() be properly noreturn again.
2013-11-27 10:57:43 -05:00
Dan Winship
695070b52e Fix the gtestutils core dump prevention again
The previous patch was preventing core dumps on failed assertions, but
not on g_error()s.
2013-11-27 10:42:32 -05:00
Philip Withnall
aa337d3674 gbytes: Clarify the nullability of GBytes->data
Clarify that it is permitted for a GBytes to contain a NULL data
pointer, as long as its size is 0.

https://bugzilla.gnome.org/show_bug.cgi?id=715164
2013-11-27 10:12:27 +00:00
Philip Withnall
33dd6d12d7 gfileutils: Fix a potential integer overflow
When calculating the array sizes in get_contents_stdio(), there is a
possibility of overflow for very large files. Rearrange the overflow
checks to avoid this.

The code already handled some possibilities of files being too large, so
no new GError has been added to handle this; the existing
G_FILE_ERROR_FAILED is re-used.

Found by scan-build.

https://bugzilla.gnome.org/show_bug.cgi?id=715164
2013-11-27 10:05:56 +00:00
Philip Withnall
c1d5db6186 gvariant: Fix a potential memcpy(NULL) call
This probably won’t crash, as it can only happen if (size == 0), but
add a check to be safe, and to shut up the static analyser.

This case can be reached with the following call:
    gvs_read_unaligned_le(NULL, 0)
which can be called from:
    gvs_tuple_get_child(value, index_)
with (value.data == NULL) and (value.size == 0).

Found by scan-build.

https://bugzilla.gnome.org/show_bug.cgi?id=715164
2013-11-27 10:05:56 +00:00
Chun-wei Fan
29b66e1458 glib/tests/enviroment.c: Fix running on Windows
Don't attempt to insert environmental variables in the hash table during
the test listenv that is an empty string, as GetEnvironmentStringsW() also
returns special enviroment variables which have empty strings as their
variable names, at least on Windows 7 and 8.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
2013-11-27 08:01:46 +08:00
Stef Walter
c9cfa7d1d5 gthread-posix: Don't use gslice allocated GRecMutex
This leads to problems during cleanup, and seems strange
to have locks defined in terms of things that need locking.

https://bugzilla.gnome.org/show_bug.cgi?id=711753
2013-11-26 20:23:48 +01:00
Marc-André Lureau
d6a19d2e76 utf8: report allocation error
Make some of the conversion functions a bit more friendly to allocation
failure.

Even though the glib policy is to abort() on allocation failure by
default, it can be quite helpful to return an allocation error for
functions already providing a GError.

I needed a safer g_utf16_to_utf8() to solve crash on big clipboard
operations with win32, related to rhbz#1017250 (and coming gdk handling
bug).

https://bugzilla.gnome.org/show_bug.cgi?id=711546
2013-11-25 12:07:57 +01:00
Dan Winship
3d70db0750 Reorganize the "don't dump core from test subprocesses" code.
g_test_init() was calling _g_messages_set_exit_on_fatal() from
subprocesses, to make fatal log messages call _exit() rather than
abort(), but the function name is sort of confusing, and we don't
really need it anyway, since g_log() can just call g_test_subprocess()
instead and decide for itself.

Likewise, update g_assertion_message() to do the check itself, rather
than calling into gmessages to do it, and fix
g_assertion_message_expr() to also check whether it should exit or
abort. (Previously it always called abort(), although this didn't
actually matter since that was dead code until
test_nonfatal_assertions was added.)

https://bugzilla.gnome.org/show_bug.cgi?id=711800
2013-11-24 15:14:13 -05:00
Dan Winship
97fac93670 gtestutils: add g_assert_nonnull() to go with g_assert_null()
https://bugzilla.gnome.org/show_bug.cgi?id=711800
2013-11-24 14:59:51 -05:00
Dan Winship
f4c30feb95 gtestutils: fix g_test_set_nonfatal_assertions()
g_test_set_nonfatal_assertions() was a no-op, because
g_assertion_message() wasn't actually checking the
test_nonfatal_assertions flag. Fix that and add a test.

Also, g_test_set_nonfatal_assertions() has to set test_mode_fatal to
FALSE as well, or else a failed assertion will cause the test program
to abort at the end of the failed test.

Also, belatedly add this and the new g_assert_* methods to the docs.

https://bugzilla.gnome.org/show_bug.cgi?id=711800
2013-11-24 14:59:51 -05:00
Matthias Clasen
910191597a Add boolean returns to some hash functions
The functions g_hash_table_insert, g_hash_table_replace
and g_hash_table_add now return TRUE if they inserted a
new key/value pair.

https://bugzilla.gnome.org/show_bug.cgi?id=697828
2013-11-24 01:22:44 -05:00
Matthias Clasen
616af3b80e Avoid a compiler warning 2013-11-24 00:59:35 -05:00
Matthias Clasen
dedc990e28 Fix array API inconsistency
g_array_remove_range and g_byte_array_remove_range return
a pointer to the array, g_ptr_array_remove_range returns
void. Since it is pretty harmless, make it return the array
too.

https://bugzilla.gnome.org/show_bug.cgi?id=159528
2013-11-23 21:10:06 -05:00
Matthias Clasen
3309055878 GVariantBuilder: small documentation fixes
The examples for g_variant_builder_add and
g_variant_builder_add_parsed were leaking a heap-allocated
builder. Fix that by converting the examples to stack
allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=697585
https://bugzilla.gnome.org/show_bug.cgi?id=703522
2013-11-23 13:16:06 -05:00
Matthias Clasen
f969f1fc25 Small documentation clarification
https://bugzilla.gnome.org/show_bug.cgi?id=671557
2013-11-23 10:49:00 -05:00
Dan Winship
41eacde630 gtestutils: add "options" to g_test_init(), make option-argv0 use gtester
Declare that the previously-unused "..." argument to g_test_init() is
actually a NULL-terminated list of strings indicating testing options,
and add an option "no_g_set_prgname", which keeps g_test_init() from
calling g_set_prgname(). Then we can port glib/tests/option-argv0 to
use gtester, by passing that option.

https://bugzilla.gnome.org/show_bug.cgi?id=711796
2013-11-23 00:43:45 -05:00
Dan Winship
f733075cd1 glib/tests/include: port to gtester
https://bugzilla.gnome.org/show_bug.cgi?id=711796
2013-11-23 00:39:07 -05:00
Matthias Clasen
a9d93ca1df Add some mainloop instrumentation
Add trace points around adding, removing and dispatching of
sources.

https://bugzilla.gnome.org/show_bug.cgi?id=710741
2013-11-23 00:22:09 -05:00
Dan Winship
158dde0507 Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX
In Windows development environments that have it, <unistd.h> is mostly
just a wrapper around several other native headers (in particular,
<io.h>, which contains read(), close(), etc, and <process.h>, which
contains getpid()). But given that some Windows dev environments don't
have <unistd.h>, everything that uses those functions on Windows
already needed to include the correct Windows header as well, and so
there is never any point to including <unistd.h> on Windows.

Also, remove some <unistd.h> includes (and a few others) that were
unnecessary even on unix.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:25:39 -05:00
Dan Winship
3981cddbf8 Require POSIX.1 (1990) compliance on unix
Assume unix platforms support the original POSIX.1 standard.
Specifically, assume that if G_OS_UNIX, then we have chown(),
getcwd(), getgrgid(), getpwuid(), link(), <grp.h>, <pwd.h>,
<sys/types.h>, <sys/uio.h>, <sys/wait.h>, and <unistd.h>.

Additionally, since all versions of Windows that we care about also
have <sys/types.h>, we can remove HAVE_SYS_TYPES_H checks everywhere.

Also remove one include of <sys/times.h>, and the corresponding
configure check, since the include is not currently needed (and may
always have just been a typo for <sys/time.h>).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:17:42 -05:00
Dan Winship
6e4a7fca43 Require C90 compliance
Assume all supported platforms implement C90, and therefore they
(correctly) implement atexit(), memmove(), setlocale(), strerror(),
and vprintf(), and have <float.h> and <limits.h>.

(Also remove the configure check testing that "do ... while (0)" works
correctly; the non-do/while-based version of G_STMT_START and
G_STMT_END was removed years ago, but the check remained. Also, remove
some checks that configure.ac claimed were needed for libcharset, but
aren't actually used.)

Note that removing the g_memmove() function is not an ABI break even
on systems where g_memmove() was previously not a macro, because it
was never marked GLIB_AVAILABLE_IN_ALL or listed in glib.symbols, so
it would have been glib-internal since 2004.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
7f5b2901cf Remove alleged support for last-millennium Unixes
Remove workarounds for NeXTStep (last released in 1995), SunOS (1994),
HP-UX 9.x (1992) and 10.x (1995), OSF/1 / Digital UNIX / Tru64 UNIX
4.x (1999), and AIX 4.x (1999).

HP-UX 11 implements dlopen(), so dropping support for earlier versions
also lets us remove the HP-UX-specific gmodule-dld.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
51a917bc16 Remove alleged support for BeOS
Since the initial addition of BeOS support in 1999, there has only
been one update to it (in 2005, and it wasn't even very big). GLib is
known to not currently build on Haiku (or presumably actual BeOS)
without additional patching, and the fact that there isn't a single
G_OS_BEOS check in gio/ is suspicious.

Additionally, other than the GModule implementation, all of the
existing G_OS_BEOS checks are either (a) "G_OS_UNIX || G_OS_BEOS", or
(b) random minor POSIXy tweaks (include this header file rather than
that one, etc), suggesting that if we were going to support Haiku, it
would probably be simpler to treat it as a special kind of G_OS_UNIX
(as we do with Mac OS X) rather than as its own completely different
thing.

So, kill G_OS_BEOS.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00