diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.h | 20 |
2 files changed, 14 insertions, 14 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e7fe103..492dc79 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2004-01-25 Paolo Carlini <pcarlini@suse.de> + + * include/bits/basic_string.h (erase(size_type, size_type), + erase(iterator), erase(iterator, iterator)): Call _M_replace_safe + instead, thus avoiding redundant check for length_error. + + * include/bits/basic_string.h: Tweak some comments. + 2004-01-24 Paolo Carlini <pcarlini@suse.de> * include/bits/basic_string.tcc (operator+(const _CharT*, diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index eb160d3..a42a5c4 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -993,7 +993,6 @@ namespace std * @param c The character to insert. * @return Iterator referencing newly inserted char. * @throw std::length_error If new length exceeds @c max_size(). - * @throw std::out_of_range If @a p is beyond the end of this string. * * Inserts character @a c at position referenced by @a p. If adding * character causes the length to exceed max_size(), length_error is @@ -1016,7 +1015,6 @@ namespace std * @param p Iterator referencing position in string to insert at. * @return Iterator referencing newly inserted char. * @throw std::length_error If new length exceeds @c max_size(). - * @throw std::out_of_range If @a p is beyond the end of this string. * * Inserts a default-constructed character at position * referenced by @a p. If adding character causes the length @@ -1045,18 +1043,15 @@ namespace std */ basic_string& erase(size_type __pos = 0, size_type __n = npos) - { return _M_replace_aux(_M_check(__pos, "basic_string::erase"), - _M_limit(__pos, __n), size_type(0), _CharT()); } + { return _M_replace_safe(_M_check(__pos, "basic_string::erase"), + _M_limit(__pos, __n), NULL, size_type(0)); } /** * @brief Remove one character. * @param position Iterator referencing the character to remove. * @return iterator referencing same location after removal. - * @throw std::out_of_range If @a position is beyond the end of this - * string. * - * Removes the character at @a position from this string. If @a - * position is beyond end of string, out_of_range is thrown. The value + * Removes the character at @a position from this string. The value * of the string doesn't change if an error is thrown. */ iterator @@ -1065,7 +1060,7 @@ namespace std _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin() && __position < _M_iend()); const size_type __pos = __position - _M_ibegin(); - _M_replace_aux(__pos, size_type(1), size_type(0), _CharT()); + _M_replace_safe(__pos, size_type(1), NULL, size_type(0)); _M_rep()->_M_set_leaked(); return _M_ibegin() + __pos; } @@ -1075,12 +1070,9 @@ namespace std * @param first Iterator referencing the first character to remove. * @param last Iterator referencing the end of the range. * @return Iterator referencing location of first after removal. - * @throw std::out_of_range If @a first is beyond the end of this - * string. * * Removes the characters in the range [first,last) from this string. - * If @a first is beyond end of string, out_of_range is thrown. The - * value of the string doesn't change if an error is thrown. + * The value of the string doesn't change if an error is thrown. */ iterator erase(iterator __first, iterator __last) @@ -1088,7 +1080,7 @@ namespace std _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last && __last <= _M_iend()); const size_type __pos = __first - _M_ibegin(); - _M_replace_aux(__pos, __last - __first, size_type(0), _CharT()); + _M_replace_safe(__pos, __last - __first, NULL, size_type(0)); _M_rep()->_M_set_leaked(); return _M_ibegin() + __pos; } |