summary refs log tree commit diff
path: root/shared/nm-glib-aux/nm-errno.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared/nm-glib-aux/nm-errno.c')
-rw-r--r--shared/nm-glib-aux/nm-errno.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/shared/nm-glib-aux/nm-errno.c b/shared/nm-glib-aux/nm-errno.c
index 668606ca..c05379ec 100644
--- a/shared/nm-glib-aux/nm-errno.c
+++ b/shared/nm-glib-aux/nm-errno.c
@@ -7,8 +7,6 @@
 
 #include "nm-errno.h"
 
-#include <pthread.h>
-
 /*****************************************************************************/
 
 static NM_UTILS_LOOKUP_STR_DEFINE(
@@ -162,19 +160,9 @@ nm_strerror_native(int errsv)
 
     buf = buf_static;
     if (G_UNLIKELY(!buf)) {
-        int           errno_saved = errno;
-        pthread_key_t key;
-
         buf        = g_malloc(NM_STRERROR_BUFSIZE);
         buf_static = buf;
-
-        if (pthread_key_create(&key, g_free) != 0 || pthread_setspecific(key, buf) != 0) {
-            /* Failure. We will leak the buffer when the thread exits.
-             *
-             * Nothing we can do about it really. For Debug builds we fail with an assertion. */
-            nm_assert_not_reached();
-        }
-        errno = errno_saved;
+        nm_utils_thread_local_register_destroy(buf, g_free);
     }
 
     return nm_strerror_native_r(errsv, buf, NM_STRERROR_BUFSIZE);