diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2001-02-27 23:00:35 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2001-02-27 23:00:35 +0000 |
commit | 9dd3d53c9a16fe6f2374e532e2cec6d51ca454ed (patch) | |
tree | 95b81a4256de6c7baa4cf98802ce7578bdd5bfc3 | |
parent | 788f238c59f903daf994eae6fe70a0470f382632 (diff) | |
download | gcc-9dd3d53c9a16fe6f2374e532e2cec6d51ca454ed.zip gcc-9dd3d53c9a16fe6f2374e532e2cec6d51ca454ed.tar.gz gcc-9dd3d53c9a16fe6f2374e532e2cec6d51ca454ed.tar.bz2 |
std_stdexcept.h (runtime_error): Make string member non-const.
2001-02-27 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/std_stdexcept.h (runtime_error): Make string
member non-const.
(logic_error): Same.
* testsuite/19_diagnostics/stdexceptions.cc (test04): Add test.
(test03): Fix.
From-SVN: r40098
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/std_stdexcept.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc | 38 |
3 files changed, 44 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d5d4852..557cb7d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,6 +1,10 @@ 2001-02-27 Benjamin Kosnik <bkoz@redhat.com> - * testsuite/19_diagnostics/stdexceptions.cc (test03): Fix. + * include/bits/std_stdexcept.h (runtime_error): Make string + member non-const. + (logic_error): Same. + * testsuite/19_diagnostics/stdexceptions.cc (test04): Add test. + (test03): Fix. 2001-02-26 Benjamin Kosnik <bkoz@redhat.com> diff --git a/libstdc++-v3/include/bits/std_stdexcept.h b/libstdc++-v3/include/bits/std_stdexcept.h index dc503aa..ee9ebf1 100644 --- a/libstdc++-v3/include/bits/std_stdexcept.h +++ b/libstdc++-v3/include/bits/std_stdexcept.h @@ -43,7 +43,7 @@ namespace std { class logic_error : public exception { - const string _M_msg; + string _M_msg; public: explicit @@ -82,7 +82,7 @@ namespace std class runtime_error : public exception { - const string _M_msg; + string _M_msg; public: explicit diff --git a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc index 11816ba1..d5a2058 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc @@ -69,12 +69,48 @@ void test03() { VERIFY( false ); } } +// test copy ctors and assignment operators +// libstdc++/1972 +// via Greg Bumgardner <bumgard@roguewave.com> +void allocate_on_stack(void) +{ + const size_t num = 512; + __extension__ char array[num]; + for (size_t i = 0; i < num; i++) + array[i]=0; +} +void test04() +{ + const std::string s("CA ISO emergency once again:immediate power down"); + const char* strlit1 = "wish I lived in Palo Alto"; + const char* strlit2 = "...or Santa Barbara"; + std::runtime_error obj1(s); + + // block 01 + { + const std::string s2(strlit1); + std::runtime_error obj2(s2); + obj1 = obj2; + } + allocate_on_stack(); + VERIFY( strcmp(strlit1, obj1.what()) == 0 ); + + // block 02 + { + const std::string s3(strlit2); + std::runtime_error obj3 = std::runtime_error(s3); + obj1 = obj3; + } + allocate_on_stack(); + VERIFY( strcmp(strlit2, obj1.what()) == 0 ); +} int main(void) { test01(); test02(); test03(); - + test04(); + return 0; } |