Enable -Wpedantic, fix unconditional use of C++14 extension
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c99be0e..19472de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -332,7 +332,7 @@
# Add desired warnings
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
- target_compile_options( SelfTest PRIVATE -Wall -Wextra -Wunreachable-code )
+ target_compile_options( SelfTest PRIVATE -Wall -Wextra -Wunreachable-code -Wpedantic)
if (CATCH_ENABLE_WERROR)
target_compile_options( SelfTest PRIVATE -Werror)
endif()
diff --git a/include/internal/catch_stringref.cpp b/include/internal/catch_stringref.cpp
index bac8b1d..b0b2f8e 100644
--- a/include/internal/catch_stringref.cpp
+++ b/include/internal/catch_stringref.cpp
@@ -15,6 +15,13 @@
#include <ostream>
#include <cstring>
+#include <cstdint>
+
+namespace {
+ const uint32_t byte_2_lead = 0xC0;
+ const uint32_t byte_3_lead = 0xE0;
+ const uint32_t byte_4_lead = 0xF0;
+}
namespace Catch {
StringRef::StringRef( char const* rawChars ) noexcept
@@ -79,13 +86,12 @@
// Make adjustments for uft encodings
for( size_type i=0; i < m_size; ++i ) {
char c = m_start[i];
- if( ( c & 0b11000000 ) == 0b11000000 ) {
- if( ( c & 0b11100000 ) == 0b11000000 )
+ if( ( c & byte_2_lead ) == byte_2_lead ) {
+ noChars--;
+ if (( c & byte_3_lead ) == byte_3_lead )
noChars--;
- else if( ( c & 0b11110000 ) == 0b11100000 )
- noChars-=2;
- else if( ( c & 0b11111000 ) == 0b11110000 )
- noChars-=3;
+ if( ( c & byte_4_lead ) == byte_4_lead )
+ noChars--;
}
}
return noChars;