about summary refs log tree commit diff
path: root/intl/finddomain.c
diff options
context:
space:
mode:
Diffstat (limited to 'intl/finddomain.c')
-rw-r--r--intl/finddomain.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/intl/finddomain.c b/intl/finddomain.c
index 9af765d540..39e54755d2 100644
--- a/intl/finddomain.c
+++ b/intl/finddomain.c
@@ -80,22 +80,22 @@ _nl_find_domain (dirname, locale, domainname, domainbinding)
    */
 
   /* We need to protect modifying the _NL_LOADED_DOMAINS data.  */
-  __libc_lock_define_initialized (static, lock);
-  __libc_lock_lock (lock);
+  __libc_rwlock_define_initialized (static, lock);
+  __libc_rwlock_rdlock (lock);
 
   /* If we have already tested for this locale entry there has to
      be one data set in the list of loaded domains.  */
   retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
 			       strlen (dirname) + 1, 0, locale, NULL, NULL,
 			       NULL, NULL, domainname, 0);
-  __libc_lock_unlock (lock);
+  __libc_rwlock_unlock (lock);
 
   if (retval != NULL)
     {
       /* We know something about this locale.  */
       int cnt;
 
-      if (retval->decided == 0)
+      if (retval->decided <= 0)
 	_nl_load_domain (retval, domainbinding);
 
       if (retval->data != NULL)
@@ -103,7 +103,7 @@ _nl_find_domain (dirname, locale, domainname, domainbinding)
 
       for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
 	{
-	  if (retval->successor[cnt]->decided == 0)
+	  if (retval->successor[cnt]->decided <= 0)
 	    _nl_load_domain (retval->successor[cnt], domainbinding);
 
 	  if (retval->successor[cnt]->data != NULL)
@@ -141,7 +141,7 @@ _nl_find_domain (dirname, locale, domainname, domainbinding)
 			   &codeset, &normalized_codeset);
 
   /* We need to protect modifying the _NL_LOADED_DOMAINS data.  */
-  __libc_lock_lock (lock);
+  __libc_rwlock_wrlock (lock);
 
   /* Create all possible locale entries which might be interested in
      generalization.  */
@@ -149,20 +149,20 @@ _nl_find_domain (dirname, locale, domainname, domainbinding)
 			       strlen (dirname) + 1, mask, language, territory,
 			       codeset, normalized_codeset, modifier,
 			       domainname, 1);
-  __libc_lock_unlock (lock);
+  __libc_rwlock_unlock (lock);
 
   if (retval == NULL)
     /* This means we are out of core.  */
     return NULL;
 
-  if (retval->decided == 0)
+  if (retval->decided <= 0)
     _nl_load_domain (retval, domainbinding);
   if (retval->data == NULL)
     {
       int cnt;
       for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
 	{
-	  if (retval->successor[cnt]->decided == 0)
+	  if (retval->successor[cnt]->decided <= 0)
 	    _nl_load_domain (retval->successor[cnt], domainbinding);
 	  if (retval->successor[cnt]->data != NULL)
 	    break;