- Dec 04, 2014
-
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
seems to have stopped crashing now...
-
- Dec 03, 2014
-
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
This defines some constants and syscall wrappers for features which may not yet have appeared in the libc.
-
Allison Karlitskaya authored
1) mmap() of a 0-sized region is EINVAL, so don't try that 2) MAP_SHARED on a sealed memfd fails for some reason, so use MAP_PRIVATE instead
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
Remove this one outstanding case of direct construction of GVariant instances and port it to use g_variant_alloc() like everyone else.
-
Allison Karlitskaya authored
Take GVariantTypeInfo instead of a GVariantType on the internal constructors for GVariant. Although this results in a bit more code for almost every call, it turns out that it makes most uses more convenient -- that fact that we consume the GVariantInfo means that we don't have to go back to free the type when we're done. This change will allow us to port g_variant_get_child() over to using g_variant_alloc(). It was the one outstanding place where we constructed GVariant instances that was not yet using it.
-
Allison Karlitskaya authored
Add a new pair of internal helpers to gvariant-core.c to provide a unified way to construct and query the content of serialised GVariant instances. Rewrite g_variant_new_from_data() to use this. Move g_variant_new_from_bytes() and g_variant_get_data_as_bytes() out of -core and into gvariant.c, also rewriting them to use the same. Take the time to do some cleanup and make some general improvements in consistency: - move the checks for improperly sized fixed-sized data out of _new_from_bytes() and into the common code so that we do this check on _new_from_data() as well - correctly deal with the case of NULL data in _get_data_as_bytes(). This would have crashed before. Add a test for that. - if the user hands us data with a size of zero then unref and/or destroy-notify things immediately. The idea that every GVariant must have an associated GBytes remains. This could potentially be optimsed a bit further in the future, but the cases where it could be avoided are only a few (errors, zero-size, static stoarge) so let's not pursue that now.
-
Allison Karlitskaya authored
-
Allison Karlitskaya authored
Add a new type 'f' to correspond to single precision floating point values. This type was never added to D-Bus for two reasons: 1) there is no benefit to using float rather than doubles as parameters for RPC 2) classically, you shouldn't move bulk data over D-Bus Now that we've decided that we want to use D-Bus for bulk data transfers, it makes a good deal of sense to want to send an array of floats or an array of fixed-sized tuples containing floats. https://bugzilla.gnome.org/show_bug.cgi?id=740897
-
- Dec 02, 2014
-
-
Allison Karlitskaya authored
Generate a random value and make sure we get the same result as doing it the 'usual' way (which is already subject to a whole lot of testing).
-
Allison Karlitskaya authored
Add code for serialising GVariant to GVariantVectors. Export that internally via the glib-private machanism so that we can use it from GDBus.
-
Allison Karlitskaya authored
This structure (and its associated functions) will be used as an intermediate step for serialising GVariant instance onto kdbus without copying large amounts of data.
-
Allison Karlitskaya authored
Change the internal g_variant_ensure_serialised() helper over to working on unlocked instances and have it conditionally acquire the lock using the utility function added in the last commit.
-
Allison Karlitskaya authored
Many of the core GVariant operations have two modes: one for tree-form and one for serialised. Once a GVariant is in serialised form it will always be serialised, so it is safe to simply check for that and proceed with the operation in that case. A tree-form GVariant instance always has a chance of being implicitly serialised, however, so we have to take locks when performing operations on these. Write a helper function that reliably checks if the instance is in tree-form, locking it if it is. Rewrite some of the other functions to use this helper. In some cases this simplifies the code and in others it reduces locking.
-
Allison Karlitskaya authored
It's always possible to determine the serialised size of a GVariant instance, even in the case that it is not yet serialised. This can be done by calling g_variant_get_size() which will base its answer on the size of each child (which must be recursively determined). We must perform this process before we can allocate the buffer to serialise a GVariant into (since we must know the size of the buffer). This means that serialising a GVariant involves two steps that recurse through the entire tree of values. We must take locks twice. Simplify this by always determining the size when the instance is first created, from the sizes of its children (which now will always be known as well). We can do this without taking any locks because the newly-created instance has never been exposed and because the size on the children is now a constant that can be directly accessed without a lock. This is a reduction in complexity and will also be a performance improvement in all cases where a GVariant is serialised. It will be a slight performance hit in the case that we construct tree-form instances and never serialise them.
-
Allison Karlitskaya authored
Add a way to get the zero-copy fd back out of a GBytes that was created from one.
-
Allison Karlitskaya authored
This function takes a memfd, seals it, and creates a GBytes based on it.
-
Add a function that checks if a fd is sealed and, if it's not, seals it. On Linux this is more or less an operation on memfd. On other systems, it currently always returns FALSE.
-
Allison Karlitskaya authored
We have a wide variety of different sources of data for GBytes. Instead of having all possibilities inside of a single structure type, add a 'type' field and a couple of subtypes. This also forces us to clean up our access to the ->data pointer from all over the code which may become a problem in the future if we want to lazy-map memfd GBytes instances by keeping the data pointer as NULL until we are ready to use it. We also introduce a new type of GBytes: 'inline'. This allows us to make a single allocation instead of two in the g_bytes_new() case.
-
Allison Karlitskaya authored
Add g_assert_se(), g_return_if_fail_se() and g_return_val_if_fail_se() as variants of the existing macros that are guaranteed to evaluate side effects in their expression argument. Inspired by similar macros in systemd. These are just macros, so they come at no extra cost. https://bugzilla.gnome.org/show_bug.cgi?id=741026
-
-
Ignacio Casal Quinteiro authored
next time I should definitely try to compile after a rebase conflict...
-
Ignacio Casal Quinteiro authored
It adds a new error G_IO_ERROR_NOT_CONNECTED and makes the win32 error ERROR_PIPE_LISTENING to be translated to it. https://bugzilla.gnome.org/show_bug.cgi?id=741016
-
- Dec 01, 2014
-
-
Rico Tzschichholz authored
-
Trần Ngọc Quân authored
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
-
- Nov 29, 2014
-
-
Dan Winship authored
Add G_IO_ERROR_CONNECTION_CLOSED as an alias for G_IO_ERROR_BROKEN_PIPE, and also return it on ECONNRESET. It doesn't really make sense to try to distinguish EPIPE and ECONNRESET at the GLib level, since the exact choice of which error gets returned in what conditions depends on the OS. Given that, we ought to map the two errors to the same value, and since we're already mapping EPIPE to G_IO_ERROR_BROKEN_PIPE, we need to map ECONNRESET to that too. But the existing name doesn't really make sense for sockets, so we add a new name. https://bugzilla.gnome.org/show_bug.cgi?id=728928
-
Dan Winship authored
This is a convenience method for creating a GNetworkAddress which is guaranteed to return IPv4 and IPv6 loopback addresses. The program cannot guarantee that 'localhost' will resolve to both types of address, so programs which wish to connect to a local service over either IPv4 or IPv6 must currently manually create an IPv4 and another IPv6 socket, and detect which of the two are working. This new API allows the existing GSocketConnectable machinery to be used to automate that. Based on a patch from Philip Withnall. https://bugzilla.gnome.org/show_bug.cgi?id=732317
-
Allison Karlitskaya authored
Allocate some larger strings in the testcase to make sure we handle them correctly as well.
-
Allison Karlitskaya authored
We intend to keep the list of poll records sorted by (integer) file descriptor, but due to a typo we are actually keeping it sorted by pointer address of the GPollFD. Fix that. https://bugzilla.gnome.org/show_bug.cgi?id=11059
-
- Nov 28, 2014
-
-
Allison Karlitskaya authored
As evidenced by a mistake that I made recently, this documentation could use a little bit of clarification.
-
Lars Uebernickel authored
g_settings_has_signal_handlers() checks whether any of the signals has pending handlers. However, g_signal_has_handler_pending() matches on exact detail, even when passing 0. Subscribing to one of GSettings' signals with a detail will fail this check and never connect to the backend. Fix this by calling has_handler_pending() with the key as detail as well. https://bugzilla.gnome.org/show_bug.cgi?id=740848
-
- Nov 27, 2014
-
-
Matthias Clasen authored
No need to keep our own copy of this in the testsuite.
-
- Nov 25, 2014
-
-
Xavier Claessens authored
Includes unit tests. https://bugzilla.gnome.org/show_bug.cgi?id=685880
-
- Nov 24, 2014
-
-
Matthias Clasen authored
-
- Nov 23, 2014
-
-
Dan Winship authored
Add a GSocketListener test program. Currently the only test is a regression test for bug 712570 (based on a standalone bug reproducer provided by Ross Lagerwall).
-