Remove arithmetic +/-127 on chars; results in UB when dealing with signed chars. Thanks to STL@microsoft for the report.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271897 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2016-06-06 14:35:22 +00:00
parent 2700619520
commit 10b452646a

View File

@@ -1,6 +1,6 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
@@ -18,11 +18,16 @@
int main()
{
char c = '\0';
assert(!std::char_traits<char>::lt('a', 'a'));
assert( std::char_traits<char>::lt('A', 'a'));
assert(!std::char_traits<char>::lt('A' + 127, 'a'));
assert(!std::char_traits<char>::lt('A' - 127, 'a'));
assert( std::char_traits<char>::lt('A', 'a' + 127));
assert( std::char_traits<char>::lt('A', 'a' - 127));
assert( std::char_traits<char>::lt('\0', 'A'));
assert(!std::char_traits<char>::lt('A', '\0'));
assert(!std::char_traits<char>::lt('a', 'a'));
assert( std::char_traits<char>::lt('A', 'a'));
assert(!std::char_traits<char>::lt('a', 'A'));
assert( std::char_traits<char>::lt('a', 'z'));
assert( std::char_traits<char>::lt('A', 'Z'));
assert( std::char_traits<char>::lt(' ', 'A'));
assert( std::char_traits<char>::lt('A', '~'));
}