Make regex::assign not clobber the regex in case of failure. Fixes PR#22213

llvm-svn: 225799
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 9db9069cf31eb9eddc1ff19b0d5667e33a8c3f75
diff --git a/include/regex b/include/regex
index 690213a..39e106c 100644
--- a/include/regex
+++ b/include/regex
@@ -2599,9 +2599,7 @@
         assign(_ForwardIterator __first, _ForwardIterator __last,
                             flag_type __f = regex_constants::ECMAScript)
         {
-            __member_init(__f);
-            __parse(__first, __last);
-            return *this;
+            return assign(basic_regex(__first, __last, __f));
         }
 
 #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS