glib-aux: fix releasing thread-local storage from nm_strerror_native()

The previous implementation was just wrong.

Fixes: e1ca3bf7ed ('shared: add nm_strerror_native() to replace strerror() and g_strerror()')
This commit is contained in:
Thomas Haller 2021-06-30 23:18:22 +02:00
parent bec4a40437
commit 5bc39d9783
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -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);