diff --git a/libcxx/include/locale b/libcxx/include/locale --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -1460,10 +1460,10 @@ this->__format_int(__fmt+1, __len, true, __iob.flags()); // Worst case is octal, with showbase enabled. Note that octal is always // printed as an unsigned value. - const unsigned __nbuf = (numeric_limits::digits / 3) // 1 char per 3 bits - + ((numeric_limits::digits % 3) != 0) // round up - + ((__iob.flags() & ios_base::showbase) != 0) // base prefix - + 1; // terminating null character + _LIBCPP_CONSTEXPR const unsigned __nbuf + = (numeric_limits::digits / 3) // 1 char per 3 bits + + ((numeric_limits::digits % 3) != 0) // round up + + 2; // base prefix + terminating null character char __nar[__nbuf]; int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); char* __ne = __nar + __nc; @@ -1489,10 +1489,10 @@ this->__format_int(__fmt+1, __len, true, __iob.flags()); // Worst case is octal, with showbase enabled. Note that octal is always // printed as an unsigned value. - const unsigned __nbuf = (numeric_limits::digits / 3) // 1 char per 3 bits - + ((numeric_limits::digits % 3) != 0) // round up - + ((__iob.flags() & ios_base::showbase) != 0) // base prefix - + 1; // terminating null character + _LIBCPP_CONSTEXPR const unsigned __nbuf + = (numeric_limits::digits / 3) // 1 char per 3 bits + + ((numeric_limits::digits % 3) != 0) // round up + + 2; // base prefix + terminating null character char __nar[__nbuf]; int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); char* __ne = __nar + __nc; @@ -1517,10 +1517,10 @@ const char* __len = "l"; this->__format_int(__fmt+1, __len, false, __iob.flags()); // Worst case is octal, with showbase enabled. - const unsigned __nbuf = (numeric_limits::digits / 3) // 1 char per 3 bits - + ((numeric_limits::digits % 3) != 0) // round up - + ((__iob.flags() & ios_base::showbase) != 0) // base prefix - + 1; // terminating null character + _LIBCPP_CONSTEXPR const unsigned __nbuf + = (numeric_limits::digits / 3) // 1 char per 3 bits + + ((numeric_limits::digits % 3) != 0) // round up + + 2; // base prefix + terminating null character char __nar[__nbuf]; int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); char* __ne = __nar + __nc; @@ -1545,10 +1545,10 @@ const char* __len = "ll"; this->__format_int(__fmt+1, __len, false, __iob.flags()); // Worst case is octal, with showbase enabled. - const unsigned __nbuf = (numeric_limits::digits / 3) // 1 char per 3 bits - + ((numeric_limits::digits % 3) != 0) // round up - + ((__iob.flags() & ios_base::showbase) != 0) // base prefix - + 1; // terminating null character + _LIBCPP_CONSTEXPR const unsigned __nbuf + = (numeric_limits::digits / 3) // 1 char per 3 bits + + ((numeric_limits::digits % 3) != 0) // round up + + 2; // base prefix + terminating null character char __nar[__nbuf]; int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); char* __ne = __nar + __nc;