Add a simplified backport of g_steal_pointer()
authorSimon McVittie <smcv@collabora.com>
Mon, 24 Jul 2017 11:30:57 +0000 (12:30 +0100)
committerSimon McVittie <smcv@collabora.com>
Wed, 7 Feb 2018 07:34:35 +0000 (07:34 +0000)
This will be used in tests later in the branch.

Sadly we can't use GLIB_VERSION_2_44 unless we are willing to have a
hard dependency on GLib 2.44, which would force us to do all our
Travis-CI builds in Docker containers rather than in ye olde base
system, and that adds 50% to the time taken to do builds.

Reviewed-by: Philip Withnall <withnall@endlessm.com>
[smcv: Rebase onto 1.13.x branch, fix minor conflicts]
Signed-off-by: Simon McVittie <smcv@collabora.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101354
(cherry picked from commit d5742550ca566317eaddea0ff7db04098f9f044f)

configure.ac
test/test-utils-glib.h

index 413f658..b5731e8 100644 (file)
@@ -262,7 +262,7 @@ dnl Don't do anything too subtle here, because the CMake build system
 dnl parses these lines with regular expressions. If necessary, adjust
 dnl cmake/modules/MacrosAutotools.cmake to compensate.
 AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_40], [Ignore post-2.40 deprecations])
-AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_40], [Prevent post-2.40 APIs])
+AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [G_ENCODE_VERSION(2,44)], [Prevent post-2.44 APIs])
 
 with_glib=yes
 
index 3952309..b170e87 100644 (file)
@@ -91,4 +91,19 @@ void test_mkdir (const gchar *path, gint mode);
 
 void test_timeout_reset (guint factor);
 
+#if !GLIB_CHECK_VERSION(2, 44, 0)
+#define g_steal_pointer(x) backported_g_steal_pointer (x)
+/* A simplified version of g_steal_pointer without type-safety. */
+static inline gpointer
+backported_g_steal_pointer (gpointer pointer_to_pointer)
+{
+  gpointer *pp = pointer_to_pointer;
+  gpointer ret;
+
+  ret = *pp;
+  *pp = NULL;
+  return ret;
+}
+#endif
+
 #endif