Don't initialize with 0.
[kopensolaris-gnu/glibc.git] / locale / duplocale.c
index 494c2ec..2dcc0f5 100644 (file)
@@ -19,7 +19,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <locale.h>
-#include <libc-lock.h>
+#include <bits/libc-lock.h>
 #include <stdlib.h>
 
 #include <localeinfo.h>
@@ -38,18 +38,20 @@ __duplocale (__locale_t dataset)
   __libc_lock_lock (__libc_setlocale_lock);
 
   /* Get memory.  */
-  result = (__locale_t) malloc (sizeof (struct __locale_t));
+  result = (__locale_t) malloc (sizeof (struct __locale_struct));
   if (result != NULL)
     {
       int cnt;
       for (cnt = 0; cnt < LC_ALL; ++cnt)
        {
          result->__locales[cnt] = dataset->__locales[cnt];
-         if (result->__locales[cnt]->usage_count != MAX_USAGE_COUNT)
+         if (result->__locales[cnt]->usage_count < MAX_USAGE_COUNT)
            ++result->__locales[cnt]->usage_count;
        }
     }
 
   /* It's done.  */
   __libc_lock_unlock (__libc_setlocale_lock);
+
+  return result;
 }