fix duplocale clobbering of new locale struct with memcpy of old
[oweals/musl.git] / src / locale / duplocale.c
index 133687071df766c9884e814d88b616b54b7b25c2..b87c933e4d27f30aac5169d4a682871ddeb9565e 100644 (file)
@@ -14,7 +14,8 @@ locale_t __duplocale(locale_t old)
        if (old->messages_name)
                strcpy(new->messages_name, old->messages_name);
 
-       if (new && old != LC_GLOBAL_LOCALE) memcpy(new, old, sizeof *new);
+       for (size_t i=0; i<sizeof new->cat/sizeof new->cat[0]; i++)
+               new->cat[i] = old->cat[i];
        return new;
 }