public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error
@ 2015-01-13 17:11 kariya_mitsuru at hotmail dot com
  2015-01-19 22:56 ` [Bug libstdc++/64584] " timshen at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: kariya_mitsuru at hotmail dot com @ 2015-01-13 17:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584

            Bug ID: 64584
           Summary: basic_regex::assign breaks *this if it throws
                    regex_error
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kariya_mitsuru at hotmail dot com

Created attachment 34436
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34436&action=edit
g++ -v

Please see the following sample.

=============================== sample code ===============================
#include <iostream>
#include <regex>

int main()
{
    std::regex re("");
    std::cout << re.flags() << std::endl;
    try {
        re.assign("(", std::regex_constants::icase);
    } catch (const std::regex_error& e) {
        std::cout << e.code() << std::endl;
    }
    std::cout << re.flags() << std::endl;
}
===========================================================================

================================= output ==================================
16
5
1
===========================================================================

cf. http://melpon.org/wandbox/permlink/tqxSS6MImnpsCGUf


The C++11 standard 28.8.3[re.regex.assign]/p.15 says, "If an exception is
thrown, *this is unchanged."

So I think that the output should be

================================= output ==================================
16
5
16
===========================================================================


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug libstdc++/64584] basic_regex::assign breaks *this if it throws regex_error
  2015-01-13 17:11 [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error kariya_mitsuru at hotmail dot com
@ 2015-01-19 22:56 ` timshen at gcc dot gnu.org
  2015-01-19 23:09 ` timshen at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: timshen at gcc dot gnu.org @ 2015-01-19 22:56 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584

--- Comment #1 from Tim Shen <timshen at gcc dot gnu.org> ---
Author: timshen
Date: Mon Jan 19 22:56:04 2015
New Revision: 219865

URL: https://gcc.gnu.org/viewcvs?rev=219865&root=gcc&view=rev
Log:
    PR libstdc++/64584
    PR libstdc++/64585
    * include/bits/regex.h (basic_regex<>::basic_regex,
    basic_regex<>::assign, basic_regex<>::imbue,
    basic_regex<>::swap, basic_regex<>::mark_count): Drop NFA after
    imbuing basic_regex; Make assign() transactional against exception.
    * include/bits/regex_compiler.h (__compile_nfa<>): Add back
    __compile_nfa SFINAE.
    * include/std/regex: Adjust include order to avoid __compile_nfa
    forward declaration.
    * testsuite/28_regex/basic_regex/assign/char/string.cc: New testcase.
    * testsuite/28_regex/basic_regex/imbue/string.cc: New testcase.

Added:
    trunk/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/
    trunk/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/regex.h
    trunk/libstdc++-v3/include/bits/regex_compiler.h
    trunk/libstdc++-v3/include/std/regex
    trunk/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug libstdc++/64584] basic_regex::assign breaks *this if it throws regex_error
  2015-01-13 17:11 [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error kariya_mitsuru at hotmail dot com
  2015-01-19 22:56 ` [Bug libstdc++/64584] " timshen at gcc dot gnu.org
@ 2015-01-19 23:09 ` timshen at gcc dot gnu.org
  2015-03-09  6:51 ` timshen at gcc dot gnu.org
  2023-07-20 11:44 ` redi at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: timshen at gcc dot gnu.org @ 2015-01-19 23:09 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584

--- Comment #2 from Tim Shen <timshen at gcc dot gnu.org> ---
Author: timshen
Date: Mon Jan 19 23:09:07 2015
New Revision: 219868

URL: https://gcc.gnu.org/viewcvs?rev=219868&root=gcc&view=rev
Log:
    PR libstdc++/64584
    PR libstdc++/64585
    * include/bits/regex.h (basic_regex<>::basic_regex,
    basic_regex<>::assign, basic_regex<>::imbue,
    basic_regex<>::swap, basic_regex<>::mark_count): Drop NFA after
    imbuing basic_regex; Make assign() transactional against exception.
    * testsuite/28_regex/basic_regex/assign/char/string.cc: New testcase.
    * testsuite/28_regex/basic_regex/imbue/string.cc: New testcase.

Added:
    branches/gcc-4_9-branch/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/
   
branches/gcc-4_9-branch/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
Modified:
    branches/gcc-4_9-branch/libstdc++-v3/ChangeLog
    branches/gcc-4_9-branch/libstdc++-v3/include/bits/regex.h
   
branches/gcc-4_9-branch/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug libstdc++/64584] basic_regex::assign breaks *this if it throws regex_error
  2015-01-13 17:11 [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error kariya_mitsuru at hotmail dot com
  2015-01-19 22:56 ` [Bug libstdc++/64584] " timshen at gcc dot gnu.org
  2015-01-19 23:09 ` timshen at gcc dot gnu.org
@ 2015-03-09  6:51 ` timshen at gcc dot gnu.org
  2023-07-20 11:44 ` redi at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: timshen at gcc dot gnu.org @ 2015-03-09  6:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584

Tim Shen <timshen at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |timshen at gcc dot gnu.org
         Resolution|---                         |FIXED

--- Comment #3 from Tim Shen <timshen at gcc dot gnu.org> ---
Resolved.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug libstdc++/64584] basic_regex::assign breaks *this if it throws regex_error
  2015-01-13 17:11 [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error kariya_mitsuru at hotmail dot com
                   ` (2 preceding siblings ...)
  2015-03-09  6:51 ` timshen at gcc dot gnu.org
@ 2023-07-20 11:44 ` redi at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2023-07-20 11:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.9.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-07-20 11:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-13 17:11 [Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error kariya_mitsuru at hotmail dot com
2015-01-19 22:56 ` [Bug libstdc++/64584] " timshen at gcc dot gnu.org
2015-01-19 23:09 ` timshen at gcc dot gnu.org
2015-03-09  6:51 ` timshen at gcc dot gnu.org
2023-07-20 11:44 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).