duplocale: don't crash when called with LC_GLOBAL_LOCALE
authorRich Felker <dalias@aerifal.cx>
Wed, 20 Jun 2012 17:48:57 +0000 (13:48 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 20 Jun 2012 17:48:57 +0000 (13:48 -0400)
posix has resolved to add this usage; for now, we just avoid writing
anything to the new locale object since it's not used anyway.

src/locale/duplocale.c

index dd445d4..5f01e13 100644 (file)
@@ -6,6 +6,6 @@ locale_t duplocale(locale_t old)
 {
        locale_t new;
        new = calloc(1, sizeof *new);
-       if (new) memcpy(new, old, sizeof *new);
+       if (new && old != LC_GLOBAL_LOCALE) memcpy(new, old, sizeof *new);
        return new;
 }