This UB has been hiding so long... 2017-03-11 Xi Ruoyao <r...@stu.xidian.edu.cn>
PR libstdc++/67214 * include/bits/locale_facets.tcc (_M_extract_int): Add explicit conversion to avoid signed overflow. --- libstdc++-v3/include/bits/locale_facets.tcc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 351190c..5f85d15 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -470,7 +470,8 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL bool __testoverflow = false; const __unsigned_type __max = (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) - ? -__gnu_cxx::__numeric_traits<_ValueT>::__min + ? -static_cast<__unsigned_type>(__gnu_cxx:: + __numeric_traits<_ValueT>::__min) : __gnu_cxx::__numeric_traits<_ValueT>::__max; const __unsigned_type __smax = __max / __base; __unsigned_type __result = 0; -- 2.7.1 -- Xi Ruoyao <r...@stu.xidian.edu.cn> School of Aerospace Science and Technology, Xidian University