diff options
Diffstat (limited to 'misc/amanda26-server/files/patch-common-src__glib-util.c')
-rw-r--r-- | misc/amanda26-server/files/patch-common-src__glib-util.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/misc/amanda26-server/files/patch-common-src__glib-util.c b/misc/amanda26-server/files/patch-common-src__glib-util.c new file mode 100644 index 000000000000..eb92dddcfc54 --- /dev/null +++ b/misc/amanda26-server/files/patch-common-src__glib-util.c @@ -0,0 +1,91 @@ +--- common-src/glib-util.c.orig 2008-12-01 21:17:19.000000000 +0000 ++++ common-src/glib-util.c 2013-02-07 15:54:40.000000000 +0000 +@@ -38,26 +38,15 @@ + if (did_glib_init) return; + did_glib_init = TRUE; + +- /* Initialize glib's type system */ +- g_type_init(); +- + /* set up libcurl (this must happen before threading + * is initialized) */ + #ifdef HAVE_LIBCURL + # ifdef G_THREADS_ENABLED +- g_assert(!g_thread_supported()); ++ g_assert(!g_thread_supported()); /* assert threads aren't initialized yet */ + # endif + g_assert(curl_global_init(CURL_GLOBAL_ALL) == 0); + #endif + +- /* And set up glib's threads */ +-#if defined(G_THREADS_ENABLED) && !defined(G_THREADS_IMPL_NONE) +- if (g_thread_supported()) { +- return; +- } +- g_thread_init(NULL); +-#endif +- + /* do a version check */ + #if GLIB_CHECK_VERSION(2,6,0) + { +@@ -71,6 +60,17 @@ + } + } + #endif ++ ++ /* Initialize glib's type system. On glib >= 2.24, this will initialize ++ * threads, so it must be done after curl is initialized. */ ++ g_type_init(); ++ ++ /* And set up glib's threads */ ++#if defined(G_THREADS_ENABLED) && !defined(G_THREADS_IMPL_NONE) ++ if (!g_thread_supported()) ++ g_thread_init(NULL); ++#endif ++ + } + + typedef enum { +@@ -107,38 +107,19 @@ + return to; + } + +-void g_list_free_full(GList * list) { +- GList * cur = list; +- +- while (cur != NULL) { +- gpointer data = cur->data; +- amfree(data); +- cur = g_list_next(cur); +- } +- +- g_list_free(list); +-} +- +-void g_slist_free_full(GSList * list) { ++#if (GLIB_MAJOR_VERSION < 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 28)) ++void _slist_free_full(GSList * list, GDestroyNotify free_fn) { + GSList * cur = list; + + while (cur != NULL) { + gpointer data = cur->data; +- amfree(data); ++ free_fn(data); + cur = g_slist_next(cur); + } + + g_slist_free(list); + } +- +-void g_queue_free_full(GQueue * queue) { +- while (!g_queue_is_empty(queue)) { +- gpointer data; +- data = g_queue_pop_head(queue); +- amfree(data); +- } +- g_queue_free(queue); +-} ++#endif + + void g_ptr_array_free_full(GPtrArray * array) { + size_t i; |