diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index 1fcc3dd33..53ee362db 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -225,27 +225,6 @@ g_cond_timedwait (GCond *cond, /* {{{1 new/free API */ -GMutex * -g_mutex_new (void) -{ - GMutex *mutex; - - /* malloc() is temporary until all libglib users are ported away */ - mutex = malloc (sizeof (GMutex)); - if G_UNLIKELY (mutex == NULL) - g_thread_abort (errno, "malloc"); - g_mutex_init (mutex); - - return mutex; -} - -void -g_mutex_free (GMutex *mutex) -{ - g_mutex_clear (mutex); - free (mutex); -} - GCond * g_cond_new (void) { diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c index a880e1042..91510c5e3 100644 --- a/glib/gthread-win32.c +++ b/glib/gthread-win32.c @@ -253,27 +253,6 @@ g_cond_timed_wait (GCond *cond, } /* {{{1 new/free API */ -GMutex * -g_mutex_new (void) -{ - GMutex *mutex; - - /* malloc() is temporary until all libglib users are ported away */ - mutex = malloc (sizeof (GMutex)); - if G_UNLIKELY (mutex == NULL) - g_thread_abort (errno, "malloc"); - g_mutex_init (mutex); - - return mutex; -} - -void -g_mutex_free (GMutex *mutex) -{ - g_mutex_clear (mutex); - free (mutex); -} - GCond * g_cond_new (void) { diff --git a/glib/gthread.c b/glib/gthread.c index 2328ae06c..bcc29f886 100644 --- a/glib/gthread.c +++ b/glib/gthread.c @@ -42,6 +42,7 @@ #include "gthread.h" #include "gthreadprivate.h" +#include "gslice.h" #include "gmain.h" #ifdef HAVE_UNISTD_H @@ -2575,3 +2576,21 @@ g_thread_get_initialized () { return g_thread_supported (); } + +GMutex * +g_mutex_new (void) +{ + GMutex *mutex; + + mutex = g_slice_new (GMutex); + g_mutex_init (mutex); + + return mutex; +} + +void +g_mutex_free (GMutex *mutex) +{ + g_mutex_clear (mutex); + g_slice_free (GMutex, mutex); +}