[PATCH] D26979: Do not hard-code locale data in unit tests: get it from the OS instead

Eric van Gyzen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 25 14:23:29 PST 2016


vangyzen added inline comments.


================
Comment at: projects/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp:42
+        assert(std::setlocale(LC_NUMERIC, LOCALE_en_US_UTF_8) != NULL);
+        char *expected = strdup(std::localeconv()->grouping);
+        assert(std::setlocale(LC_NUMERIC, "C") != NULL);
----------------
localeconv()->grouping can become invalid after we reset the locale to "C", so duplicate the string into a local.


================
Comment at: projects/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp:79
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
-            assert(np.thousands_sep() == L',');
+            assert(np.thousands_sep() == wexpected);
         }
----------------
This assertion now fails for me.  wexpected is 0xa0 (NBSP), which is correct.  However, np.thousands_sep() is -62, which is 0xc2, which is the first byte of a UTF-8-encoded NBSP.  It looks like the library isn't correctly handling multibyte thousands separators.


https://reviews.llvm.org/D26979





More information about the cfe-commits mailing list