public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/39882]  New: error_code constructor and assignment postconditions not met
@ 2009-04-24  9:50 chris_kohlhoff at internet-mail dot org
  2009-04-25 11:14 ` [Bug libstdc++/39882] " paolo dot carlini at oracle dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: chris_kohlhoff at internet-mail dot org @ 2009-04-24  9:50 UTC (permalink / raw)
  To: gcc-bugs

This is the same problem as 39881, but for error_code.

The constructor and assignment operator that take a ErrorCodeEnum both have the
postcondition: *this == make_error_code(e). The system_error header as of 4.4.0
does not meet this postcondition, because it always initialises the error_code
using the generic_category().

The following code:

  #include <system_error>
  #include <iostream>

  enum my_errc { my_err = 0 };

  class my_error_category_impl
    : public std::error_category
  {
  public:
    const char* name() const { return ""; }
    std::string message(int) const { return ""; }
  } my_error_category_instance;

  std::error_code make_error_code(my_errc e)
  {
    return std::error_code(
        static_cast<int>(e),
        my_error_category_instance);
  }

  namespace std {
    template <>
    struct is_error_code_enum<my_errc>
      : public true_type {};
  }

  int main()
  {
    std::error_code ec1(my_err);
    if (ec1 == make_error_code(my_err))
      std::cout << "postcondition met\n";
    else
      std::cout << "postcondition not met\n";

    std::error_code ec2;
    ec2 = my_err;
    if (ec2 == make_error_code(my_err))
      std::cout << "postcondition met\n";
    else
      std::cout << "postcondition not met\n";
  }

Currently outputs:

  postcondition not met
  postcondition not met

when it should output:

  postcondition met
  postcondition met


-- 
           Summary: error_code constructor and assignment postconditions not
                    met
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: chris_kohlhoff at internet-mail dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

* [Bug libstdc++/39882] error_code constructor and assignment postconditions not met
  2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
@ 2009-04-25 11:14 ` paolo dot carlini at oracle dot com
  2009-04-25 19:01 ` paolo at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-04-25 11:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from paolo dot carlini at oracle dot com  2009-04-25 11:14 -------
On it.


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |paolo dot carlini at oracle
                   |dot org                     |dot com
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-04-25 11:14:27
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

* [Bug libstdc++/39882] error_code constructor and assignment postconditions not met
  2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
  2009-04-25 11:14 ` [Bug libstdc++/39882] " paolo dot carlini at oracle dot com
@ 2009-04-25 19:01 ` paolo at gcc dot gnu dot org
  2009-04-25 19:03 ` paolo at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: paolo at gcc dot gnu dot org @ 2009-04-25 19:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from paolo at gcc dot gnu dot org  2009-04-25 19:01 -------
Subject: Bug 39882

Author: paolo
Date: Sat Apr 25 19:00:52 2009
New Revision: 146780

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=146780
Log:
2009-04-25  Paolo Carlini  <paolo.carlini@oracle.com>

        PR libstdc++/39880
        PR libstdc++/39881
        PR libstdc++/39882
        * include/std/system_error (is_error_code_enum<errc>): Remove.
        (error_condition<>::error_condition(_ErrorCodeEnum,)
        error_condition<>::operator=(_ErrorCodeEnum)): Use
make_error_condition.
        (error_code<>::error_code(_ErrorCodeEnum,),
        error_code<>::operator=(_ErrorCodeEnum)): Use make_error_code.
        * testsuite/19_diagnostics/system_error/39880.cc: New.
        * testsuite/19_diagnostics/error_condition/modifiers/39881.cc:
        Likewise.
        * testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
        * testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
        * testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
        * testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
        Adjust.
        * testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
        Likewise.
        * testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
        Likewise.
        * testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
        * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
        * testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
        * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.

Added:
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/
   
trunk/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
Modified:
    trunk/libstdc++-v3/include/std/system_error
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
   
trunk/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
    trunk/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
   
trunk/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
   
trunk/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
    trunk/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

* [Bug libstdc++/39882] error_code constructor and assignment postconditions not met
  2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
  2009-04-25 11:14 ` [Bug libstdc++/39882] " paolo dot carlini at oracle dot com
  2009-04-25 19:01 ` paolo at gcc dot gnu dot org
@ 2009-04-25 19:03 ` paolo at gcc dot gnu dot org
  2009-04-28 10:33 ` paolo at gcc dot gnu dot org
  2009-04-28 10:35 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: paolo at gcc dot gnu dot org @ 2009-04-25 19:03 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from paolo at gcc dot gnu dot org  2009-04-25 19:02 -------
Subject: Bug 39882

Author: paolo
Date: Sat Apr 25 19:02:17 2009
New Revision: 146781

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=146781
Log:
2009-04-25  Paolo Carlini  <paolo.carlini@oracle.com>

        PR libstdc++/39880
        PR libstdc++/39881
        PR libstdc++/39882
        * include/std/system_error (is_error_code_enum<errc>): Remove.
        (error_condition<>::error_condition(_ErrorCodeEnum,)
        error_condition<>::operator=(_ErrorCodeEnum)): Use
make_error_condition.
        (error_code<>::error_code(_ErrorCodeEnum,),
        error_code<>::operator=(_ErrorCodeEnum)): Use make_error_code.
        * testsuite/19_diagnostics/system_error/39880.cc: New.
        * testsuite/19_diagnostics/error_condition/modifiers/39881.cc:
        Likewise.
        * testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
        * testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
        * testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
        * testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
        Adjust.
        * testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
        Likewise.
        * testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
        Likewise.
        * testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
        * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
        * testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
        * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.

Modified:
    trunk/libstdc++-v3/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

* [Bug libstdc++/39882] error_code constructor and assignment postconditions not met
  2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
                   ` (2 preceding siblings ...)
  2009-04-25 19:03 ` paolo at gcc dot gnu dot org
@ 2009-04-28 10:33 ` paolo at gcc dot gnu dot org
  2009-04-28 10:35 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: paolo at gcc dot gnu dot org @ 2009-04-28 10:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from paolo at gcc dot gnu dot org  2009-04-28 10:32 -------
Subject: Bug 39882

Author: paolo
Date: Tue Apr 28 10:32:22 2009
New Revision: 146886

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=146886
Log:
2009-04-28  Paolo Carlini  <paolo.carlini@oracle.com>

        PR libstdc++/39880
        PR libstdc++/39881
        PR libstdc++/39882
        * include/std/system_error (is_error_code_enum<errc>): Remove.
        (error_condition<>::error_condition(_ErrorCodeEnum,)
        error_condition<>::operator=(_ErrorCodeEnum)): Use
make_error_condition.
        (error_code<>::error_code(_ErrorCodeEnum,),
        error_code<>::operator=(_ErrorCodeEnum)): Use make_error_code.
        * testsuite/19_diagnostics/system_error/39880.cc: New.
        * testsuite/19_diagnostics/error_condition/modifiers/39881.cc:
        Likewise.
        * testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
        * testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
        * testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
        * testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
        Adjust.
        * testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
        Likewise.
        * testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
        * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
        Likewise.
        * testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
        * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
        * testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
        * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.

Added:
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
Modified:
    branches/gcc-4_4-branch/libstdc++-v3/ChangeLog
    branches/gcc-4_4-branch/libstdc++-v3/include/std/system_error
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
   
branches/gcc-4_4-branch/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

* [Bug libstdc++/39882] error_code constructor and assignment postconditions not met
  2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
                   ` (3 preceding siblings ...)
  2009-04-28 10:33 ` paolo at gcc dot gnu dot org
@ 2009-04-28 10:35 ` paolo dot carlini at oracle dot com
  4 siblings, 0 replies; 6+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-04-28 10:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from paolo dot carlini at oracle dot com  2009-04-28 10:35 -------
Fixed for 4.4.1.


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.4.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39882


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

end of thread, other threads:[~2009-04-28 10:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-24  9:50 [Bug libstdc++/39882] New: error_code constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
2009-04-25 11:14 ` [Bug libstdc++/39882] " paolo dot carlini at oracle dot com
2009-04-25 19:01 ` paolo at gcc dot gnu dot org
2009-04-25 19:03 ` paolo at gcc dot gnu dot org
2009-04-28 10:33 ` paolo at gcc dot gnu dot org
2009-04-28 10:35 ` paolo dot carlini at oracle dot com

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).