summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-06-30 23:18:22 +0200
committerThomas Haller <thaller@redhat.com>2021-07-05 14:51:27 +0200
commit5bc39d97834c5ba9d81e6f38e07f19eb4e9fd398 (patch)
tree9fb0495180754f635089fe336a909bfe37aa4948
parentbec4a40437e4120cf115771b03f4aa5f0fa5fef4 (diff)
downloadNetworkManager-5bc39d97834c5ba9d81e6f38e07f19eb4e9fd398.tar.gz
glib-aux: fix releasing thread-local storage from nm_strerror_native()
The previous implementation was just wrong. Fixes: e1ca3bf7ed40 ('shared: add nm_strerror_native() to replace strerror() and g_strerror()')
-rw-r--r--src/libnm-glib-aux/nm-errno.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/src/libnm-glib-aux/nm-errno.c b/src/libnm-glib-aux/nm-errno.c
index 283173e328..0426a21d40 100644
--- a/src/libnm-glib-aux/nm-errno.c
+++ b/src/libnm-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);