add a test and a couple minor bug fixes for the implicit-signed-integer-truncation sanitizer. This is PR#40566
llvm-svn: 352926
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 2e719bc428d27345da7cdcfa634c03ec69f31474
diff --git a/include/locale b/include/locale
index f16d4ba..c3c05eb 100644
--- a/include/locale
+++ b/include/locale
@@ -546,7 +546,7 @@
__exp = 'P';
else if ((__x & 0x5F) == __exp)
{
- __exp |= 0x80;
+ __exp |= (char) 0x80;
if (__in_units)
{
__in_units = false;
diff --git a/include/sstream b/include/sstream
index 71204e0..14c9197 100644
--- a/include/sstream
+++ b/include/sstream
@@ -558,7 +558,7 @@
char_type* __p = const_cast<char_type*>(__str_.data());
this->setg(__p, __p + __ninp, __hm_);
}
- return this->sputc(__c);
+ return this->sputc(traits_type::to_char_type(__c));
}
return traits_type::not_eof(__c);
}