5365 Commits

Author SHA1 Message Date
Jasper St. Pierre
8061694c49 goption: Add G_OPTION_FLAG_NONE
This is helpful to better document code, as G_OPTION_FLAG_NONE is more
readable than 0.
2014-09-16 17:49:40 -04:00
Sebastian Dröge
bb6a77afa3 grand: Only use rand_s() when targetting Visual Studio >= 2005
It did not exist before. Fall back to the current time plus
process id on older targets. This makes GLib work again on
Windows XP.

https://bugzilla.gnome.org/show_bug.cgi?id=736458
2014-09-15 22:25:08 +03:00
Sébastien Wilmet
25990eb2b6 docs: various small fixes
For the GPtrArray example, several variables declared on the same line
is harder to read and to work with (to move, remove or comment a single
variable declaration).
2014-09-13 16:59:31 +02:00
Sebastian Dröge
bebfd422af gutils: Don't use issetugid() on Android
Android had it in older versions but the new 64 bit ABI does not
have it anymore, and some versions of the 32 bit ABI neither.

https://code.google.com/p/android-developer-preview/issues/detail?id=168

https://bugzilla.gnome.org/show_bug.cgi?id=736351
2014-09-11 11:07:48 +03:00
Paolo Borelli
5bb62d077b GThreadPool: expand g_thread_pool_new docs 2014-09-08 08:19:25 +02:00
Matthias Clasen
a78443a1e4 Don't mark GThread struct as deprecated
Having a definition of struct _GThread inside a deprecation
ifdef confuses gtk-doc into marking it as deprecated. Avoid this.

https://bugzilla.gnome.org//show_bug.cgi?id=735297
2014-08-29 15:12:31 -04:00
Thomas Haller
35eaf037bd gmacros.h: add G_GNUC_*_IGNORE_DEPRECATIONS macros for clang
https://bugzilla.gnome.org/show_bug.cgi?id=734126

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-08-22 20:58:11 +02:00
Руслан Ижбулатов
14f2376c8a Change W32 console detection to look at the window, not stdout
Check for console window being attached to the process, not for stdout
being redirected into a console window.

https://bugzilla.gnome.org/show_bug.cgi?id=733960
2014-08-05 06:44:01 +00:00
Руслан Ижбулатов
4f73487300 Fix tests to compile again - add missing headers to W32, call correct process-id-getting function
https://bugzilla.gnome.org/show_bug.cgi?id=725513
2014-08-02 12:41:14 +00:00
Руслан Ижбулатов
7e0cb48dee Silence a controversial warning in win_iconv
https://bugzilla.gnome.org/show_bug.cgi?id=711547
2014-08-02 12:38:39 +00:00
Руслан Ижбулатов
42ddcc6ff2 Silence some uncontroversial warnings
https://bugzilla.gnome.org/show_bug.cgi?id=711547
2014-08-02 12:38:38 +00:00
Руслан Ижбулатов
40650e3323 Fix printf-tests on W32 by ifdefing the expected output
https://bugzilla.gnome.org/show_bug.cgi?id=725515
2014-08-02 12:31:09 +00:00
Руслан Ижбулатов
6680ff1ee9 Save errno and pass it along to make sure gettext does not change it
https://bugzilla.gnome.org/show_bug.cgi?id=725514
2014-08-02 10:54:01 +00:00
Ignacio Casal Quinteiro
786590fe93 win32: improve the package installation dir lookup
As an example, the core of gedit is in a private library
placed in %INSTALLDIR%/lib/gedit/libgedit.dll

Before this patch we would get %INSTALLDIR%/lib/gedit as the
installation package dir, while what we actually want is to get
%INSTALLDIR%

https://bugzilla.gnome.org/show_bug.cgi?id=733934
2014-07-31 13:04:56 +02:00
Alexander Larsson
b1dd594a22 Remove atomics from g_clear_object/g_clear_pointer
Practically no caller of these functions require atomic behaviour,
but the atomics are much slower than normal operations, which makes
it desirable to get rid of them. We have not done this before because
that would be a break of the ABI.

However, I recently looked into this and it seems that even if the
atomics *are* used for g_clear_* it is not ever safe to use this.  The
atomics protects two threads that are racing to free a global/shared
object from freeing the object twice. However, any *user* of the global
object have no protection from the object being freed while in use,
because there is no paired operation the reads and refs the object
as an atomic unit (nor can such an operation be implemented using
purely atomic ops).

So, since nothing could safely have used the atomic aspects of these
functions I consider it acceptable to just remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=733969
2014-07-30 15:11:01 +02:00
Owen W. Taylor
d0083f7e2d Revert "gatomic: statically assert that our assumptions hold"
This reverts commit 7269d75321b9d2a967a59fb35f243397f577eb41.

Adding G_STATIC_ASSERT() into a header file caused compilation
problems with at least one app (Anjuta). Reverting to keep
GNOME continuous testing running.

https://bugzilla.gnome.org/show_bug.cgi?id=730932
2014-07-23 09:28:23 -04:00
Colin Walters
49a5d0f6f2 gfileutils: Add missing g_free() in error path
Discovered by static analysis.

https://bugzilla.gnome.org/show_bug.cgi?id=733576
2014-07-23 07:43:41 -04:00
Simon McVittie
9060a85193 glib-init: statically assert that we have 8-bit bytes
configure.ac assumes this.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932
2014-07-23 09:18:43 +01:00
Simon McVittie
7269d75321 gatomic: statically assert that our assumptions hold
This code assumes that int is exactly 4 bytes, and that pointers
are either 4 or 8 bytes, on platforms with __ATOMIC_SEQ_CST.
In practice this is going to be true.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932
2014-07-23 09:17:48 +01:00
Ignacio Casal Quinteiro
24d614357a gspawn-win32: do not rely on __argc and __argv global vars.
Since we are getting passed Unicode values these global vars
might not have the correct value. Instead always get the wide arguments
and convert them to utf8 to use them.

https://bugzilla.gnome.org/show_bug.cgi?id=733146
2014-07-14 08:43:17 -04:00
Gergely POLONKAI
d67813045d Fix typos in gbytes_hash and g_time_zone_find_interval docs
https://bugzilla.gnome.org/show_bug.cgi?id=733084
2014-07-14 08:39:34 -04:00
Javier Jardón
60fe7b46d2 docs: Use "Returns:" instead "Return:" 2014-07-10 17:09:30 +01:00
Tim-Philipp Müller
636cd00c21 GCond (linux): fix g_cond_wait_until() return value on timeout
It should return FALSE on timeout (and only on timeout), and
TRUE otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=731986
2014-07-09 10:59:06 -04:00
Ryan Lortie
ecf1359191 GMutex (linux): detect and report some errors
Detect the following two errors:

 - attempting to unlock a mutex that is not locked

 - attempting to clear a mutex that was not initialised or was
   initialised but is still locked

Both of these are fatal errors.  We avoid using g_error() here because
doing so would involve calls back into the GMutex code, and if things
are going off the rails then we want to avoid that.

https://bugzilla.gnome.org/show_bug.cgi?id=731986
2014-07-09 10:59:06 -04:00
Ryan Lortie
49b59e5ac4 GLib: implement GMutex natively on Linux
If we have futex(2) then we can implement GMutex natively and gain a
substantial performance increase (vs. using pthreads).

This also avoids the need to allocate an extra structure in memory when
using GMutex or GCond: we can use the structure directly.

The main reason for the increase in performance is that our
implementation can be made more simple: we don't need to support the
array of options on pthread_mutex_t (which includes the possibility, for
example, of being recursive).

The result is a ~30% improvement in uncontended cases and a much larger
increase (3 to 4 times) in contended cases for a simple testcase.

https://bugzilla.gnome.org/show_bug.cgi?id=731986
2014-07-09 10:59:06 -04:00
Dan Winship
be0b921115 Fix up failure-to-see-expected-message logging
When GLib had been told to expect message X, but then actually saw
message Y, it would log the "did not see expected message" error with
message Y's log level and domain, which makes no sense. Change it to
log with domain "GLib" and G_LOG_LEVEL_CRITICAL instead.

Also, include the expected domain in the error message, so that if
that's the reason why the expectation didn't match, you can tell that
from the error message.

Update glib/tests/testing.c for these changes; for all other test
programs in GLib and elsewhere, this change should not break any
existing tests, it should only improve the output on failure.

https://bugzilla.gnome.org/show_bug.cgi?id=727974
2014-07-09 10:48:34 -04:00
Sébastien Wilmet
97f34bacce doc: small improvement and fixes
- Add an example to g_strsplit(), like it is done for g_strsplit_set().

- GTK-Doc generates a list if a "1." is at the beginning of a line.

https://bugzilla.gnome.org/show_bug.cgi?id=732704
2014-07-04 17:03:50 +02:00
Rico Tzschichholz
46df528adf glib: Fix make dist 2014-06-30 14:46:32 +02:00
Chun-wei Fan
72de983469 valgrind.h: Disable Valgrind features on x64 Visual C++ Builds
...so that builds of GLib on x64 Visual C++ can be restored, as the build
fails in line 449 of valgrind.h as it only supports MinGW/GCC for x64
Windows and simply will not build otherwise.  Make the x64 Visual C++
builds compile again by defining NVALGRIND when GLib is being built for
Windows on x64 Visual C++.

https://bugzilla.gnome.org/show_bug.cgi?id=732465
2014-06-30 19:56:05 +08:00
Sébastien Wilmet
82352ab8e7 doc: various improvements
- g_subprocess_launcher_spawn() and spawnv(): there is no other way
  AFAIK to create a GSubprocess from a launcher. So these
  functions are not "convenience helper".

- annotate optional arguments for g_shell_parse_argv().

- other trivial fix

https://bugzilla.gnome.org/show_bug.cgi?id=732357
2014-06-29 17:57:24 +02:00
Mikhail Zabaluev
9f5afe3966 glib/tests/mainloop: Acquire the context while asserting its state
The iteration methods presume that the context is acquired.

https://bugzilla.gnome.org/show_bug.cgi?id=699132
2014-06-28 13:56:07 -04:00
Mikhail Zabaluev
c0e8f8a8db A simple test for polling on a file-like descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=699132
2014-06-28 13:56:07 -04:00
Ryan Lortie
0007376128 giochannel: avoid setting uninitialised length
Our internal call to g_io_channel_read_line_backend() may return
G_IO_STATUS_ERROR, in which case two things will be true:

 - the GError will have been set (if appropriate)

 - the &got_length return value may not have been set

Since it's our convention to leave 'out' parameters untouched in
exception cases, this is perfectly fine.  Unfortunately,
g_io_channel_read_line(), in wrapping this internal function, always
promotes the length parameter, even in the case of error.

Stop doing that in order to avoid overwriting the callers's variable
with junk in the error case.

https://bugzilla.gnome.org/show_bug.cgi?id=731339
2014-06-28 13:51:23 -04:00
Bastien Nocera
88b284c070 GDateTime: Add guards to g_date_time_new()
https://bugzilla.gnome.org/show_bug.cgi?id=728401
2014-06-28 13:46:17 -04:00
Florian Pelz
f18811f2dc docs: Fix formatting of g_alloca documentation.
https://bugzilla.gnome.org/show_bug.cgi?id=729825
2014-06-28 13:43:23 -04:00
Daniel Macks
cc38cb359f Convert multiple #if/#endif to single #if/#elif/#endif
https://bugzilla.gnome.org/show_bug.cgi?id=731424
2014-06-28 13:19:56 -04:00
Patrick Welche
ab9f63fadd gmessages: make g_assert_warning compiler friendly
https://bugzilla.gnome.org/show_bug.cgi?id=720708
2014-06-28 13:17:16 -04:00
Ryan Lortie
dce88768dc all: remove use of 'register' keyword
We should have done this a decade ago...

https://bugzilla.gnome.org/show_bug.cgi?id=730293
2014-06-28 13:07:52 -04:00
Christian Persch
d217429729 unicode: Update to unicode 7.0.0
See bug https://bugzilla.gnome.org/show_bug.cgi?id=731929.
2014-06-28 12:49:38 -04:00
Christian Persch
30ed5f53e2 unicode: Switch compose_second_single to gunichar
This will be required for the update to unicode 7.0.0.
2014-06-28 12:49:07 -04:00
Christian Persch
7e3d32b705 unicode: Move gscripttable.h generation into main script
So we just have to run one script when updating the unicode data, not two.
2014-06-28 12:49:07 -04:00
Christian Persch
33c8a89490 unicode: Simplify width table generation
Move width table generation into the gen-unicode-tables.pl script. This makes
updating the tables automatic without the previously required manual editing
required to insert the tables in the right place of the source code.
2014-06-28 12:49:07 -04:00
Ryan Lortie
4d327bdcb0 GTimeZone: remove some dead code
Remove code that parsed out and stored the unused isstd and isgmt
fields.
2014-06-27 13:21:15 -04:00
Ryan Lortie
f727c820b8 gvariant tests: workaround libc/compiler "issue"
memcmp() is declared by glibc as follows:

  /* Compare N bytes of S1 and S2.  */
  extern int memcmp (const void *__s1, const void *__s2, size_t __n)
       __THROW __attribute_pure__ __nonnull ((1, 2));

despite the fact that it is valid to call it with a null pointer if the
size is zero.

gcc 4.9.0 contains a new optimisation that sees that we pass a pointer
to this function and concludes that it certainly must not be null,
removing a later check and thereby causing a crash.

We protect the invocation of memcmp() with a condition to prevent gcc
from making this false assumption (arguably under wrong advice from
glibc).
2014-06-24 14:18:29 -04:00
Philip Withnall
afea86a7ef goption: Remove an unused assignment
Coverity issue: #1159514

https://bugzilla.gnome.org/show_bug.cgi?id=732005
2014-06-22 12:57:57 +01:00
Philip Withnall
6b8ae8f21b gwakeup: Clarify buffer sizing in g_wakeup_signal()
The code in g_wakeup_signal() is currently correct: it writes a 64-bit
counter increment value if the FD is an eventfd, and writes an arbitrary
8-bit value if using a normal pipe.

However, the reasoning behind these buffer sizes is not clear, and the
mismatch between the allocated buffer size and the length passed to
write() in the pipe case could be mistaken for a bug.

Coverity issue: #1159490

https://bugzilla.gnome.org/show_bug.cgi?id=732002
2014-06-21 17:41:31 +01:00
Ryan Lortie
bef557e55d gatomic: disable GCC extension atomics for clang
clang defines the macro that we use to test for GCC's extension support
for C11 atomics, but doesn't define the extension in the same way.
Check for clang and disable the macros again if we find it.

https://bugzilla.gnome.org/show_bug.cgi?id=731513
2014-06-20 16:00:48 -04:00
Colin Walters
f7d7e5ab2f gbookmarkfile: Cleaner error handling code to pacify static analysis
A static analyzer flagged the g_file_get_contents() call as not
checking its return value.  While the code here is actually correct,
it's verbose at best.

I think the "goto out + cleanup" code style is substantially cleaner,
less error prone, and easier to read.  It also will pacify the static
analyzer.

https://bugzilla.gnome.org/show_bug.cgi?id=731584
2014-06-12 13:25:06 -04:00
Tim-Philipp Müller
256305dea5 gthread: use inline keyword for _get_impl() functions
Give compiler a hint that these should be inlined,
which doesn't seem to happen by default with -O2.
Yields 5% speedup in artificial benchmarks, and
1% speedup in a real-world test case doing a lot
of mutex locking and unlocking.

https://bugzilla.gnome.org/show_bug.cgi?id=730807
2014-06-06 11:41:12 -04:00
Ryan Lortie
db0e43d25a gatomic: use GCC C11-style atomics, if available
GCC does not yet support ISO C11 atomic operations, but it has
compatible versions available as an extension.  Use these for load and
store if they are available in order to avoid emitting a hard fence
instruction (since in many cases, we do not need it -- on x86, for
example).

For now we use the fully seqentially-consistent memory model, since
these APIs are documented rather explicitly: "This call acts as a full
compiler and hardware memory barrier".

In the future we can consider introducing new APIs for the more relaxed
memory models, if they are available (or fall back to stricter ones
otherwise).

https://bugzilla.gnome.org/show_bug.cgi?id=730807
2014-06-06 11:41:12 -04:00