[PATCH 08/14] Add _REENT_LOCALE(ptr)

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
From: Matt Joyce <[email protected]>

Add a _REENT_LOCALE() macro to encapsulate access to the _locale
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.
---
 newlib/libc/include/sys/reent.h | 1 +
 newlib/libc/locale/setlocale.h  | 4 ++--
 newlib/libc/locale/uselocale.c  | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index 2c1593a5f..4296188f5 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -721,6 +721,7 @@ struct _reent
 #define _REENT_EMERGENCY(_ptr)	((_ptr)->_emergency)
 #define _REENT_ERRNO(_ptr)	((_ptr)->_errno)
 #define _REENT_INC(_ptr)	((_ptr)->_inc)
+#define _REENT_LOCALE(_ptr)	((_ptr)->_locale)
 #define _REENT_STDIN(_ptr)	((_ptr)->_stdin)
 #define _REENT_STDOUT(_ptr)	((_ptr)->_stdout)
 #define _REENT_STDERR(_ptr)	((_ptr)->_stderr)
diff --git a/newlib/libc/locale/setlocale.h b/newlib/libc/locale/setlocale.h
index a0c80843a..9f7fd7c10 100644
--- a/newlib/libc/locale/setlocale.h
+++ b/newlib/libc/locale/setlocale.h
@@ -218,7 +218,7 @@ _ELIDABLE_INLINE struct __locale_t *
 __get_locale_r (struct _reent *r)
 {
 #ifdef __HAVE_LOCALE_INFO__
-  return r->_locale;
+  return _REENT_LOCALE(r);
 #else
   return __get_global_locale();
 #endif
@@ -232,7 +232,7 @@ _ELIDABLE_INLINE struct __locale_t *
 __get_current_locale (void)
 {
 #ifdef __HAVE_LOCALE_INFO__
-  return _REENT->_locale ?: __get_global_locale ();
+  return _REENT_LOCALE(_REENT) ?: __get_global_locale ();
 #else
   return __get_global_locale();
 #endif
diff --git a/newlib/libc/locale/uselocale.c b/newlib/libc/locale/uselocale.c
index 83ebcdd19..799fb724a 100644
--- a/newlib/libc/locale/uselocale.c
+++ b/newlib/libc/locale/uselocale.c
@@ -64,9 +64,9 @@ _uselocale_r (struct _reent *p, struct __locale_t *newloc)
   if (!current_locale)
     current_locale = LC_GLOBAL_LOCALE;
   if (newloc == LC_GLOBAL_LOCALE)
-    p->_locale = NULL;
+    _REENT_LOCALE(p) = NULL;
   else if (newloc)
-    p->_locale = newloc;
+    _REENT_LOCALE(p) = newloc;
   return current_locale;
 }
 
-- 
2.35.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.