Fix undefined behavior in syntax_option_type::operator~ and match_flag_type::operator./a.out Found by UBSan
llvm-svn: 177693
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 1c2c986796f1cd23ccdaf10ffe1a9e70c936b19c
diff --git a/include/regex b/include/regex
index 1156a3e..d1afa54 100644
--- a/include/regex
+++ b/include/regex
@@ -764,7 +764,7 @@
syntax_option_type
operator~(syntax_option_type __x)
{
- return syntax_option_type(~int(__x));
+ return syntax_option_type(~int(__x) & 0x1FF);
}
inline _LIBCPP_INLINE_VISIBILITY
@@ -840,7 +840,7 @@
match_flag_type
operator~(match_flag_type __x)
{
- return match_flag_type(~int(__x));
+ return match_flag_type(~int(__x) & 0x0FFF);
}
inline _LIBCPP_INLINE_VISIBILITY