public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/39881] New: error_condition constructor and assignment postconditions not met
@ 2009-04-24 9:48 chris_kohlhoff at internet-mail dot org
2009-04-25 11:14 ` [Bug libstdc++/39881] " 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:48 UTC (permalink / raw)
To: gcc-bugs
The constructor and assignment operator that take a ErrorConditionEnum both
have the postcondition: *this == make_error_condition(e). The system_error
header as of 4.4.0 does not meet this postcondition, because it always
initialises the error_condition 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_condition make_error_condition(my_errc e)
{
return std::error_condition(
static_cast<int>(e),
my_error_category_instance);
}
namespace std {
template <>
struct is_error_condition_enum<my_errc>
: public true_type {};
}
int main()
{
std::error_condition ec1(my_err);
if (ec1 == make_error_condition(my_err))
std::cout << "postcondition met\n";
else
std::cout << "postcondition not met\n";
std::error_condition ec2;
ec2 = my_err;
if (ec2 == make_error_condition(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_condition 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=39881
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug libstdc++/39881] error_condition constructor and assignment postconditions not met
2009-04-24 9:48 [Bug libstdc++/39881] New: error_condition 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:04
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39881
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug libstdc++/39881] error_condition constructor and assignment postconditions not met
2009-04-24 9:48 [Bug libstdc++/39881] New: error_condition constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
2009-04-25 11:14 ` [Bug libstdc++/39881] " 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 39881
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=39881
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug libstdc++/39881] error_condition constructor and assignment postconditions not met
2009-04-24 9:48 [Bug libstdc++/39881] New: error_condition constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
2009-04-25 11:14 ` [Bug libstdc++/39881] " 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 39881
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=39881
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug libstdc++/39881] error_condition constructor and assignment postconditions not met
2009-04-24 9:48 [Bug libstdc++/39881] New: error_condition 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 39881
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=39881
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug libstdc++/39881] error_condition constructor and assignment postconditions not met
2009-04-24 9:48 [Bug libstdc++/39881] New: error_condition 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=39881
^ 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:48 [Bug libstdc++/39881] New: error_condition constructor and assignment postconditions not met chris_kohlhoff at internet-mail dot org
2009-04-25 11:14 ` [Bug libstdc++/39881] " 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).