From c86c54e6d12b84a346c77e7101c758c78555c1f3 Mon Sep 17 00:00:00 2001 From: John Carter Date: Fri, 1 Nov 2002 15:21:17 +0000 Subject: re PR libstdc++/7961 (compare( char *) implemented incorrectly.) 2002-11-01 John Carter PR libstdc++/7961 * include/bits/basic_string.tcc (compare(const _CharT* __s)): Don't access __s past its length. From-SVN: r58717 --- libstdc++-v3/include/bits/basic_string.tcc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3/include/bits') diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 3047dfa5ba7..198f190eae8 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -884,9 +884,11 @@ namespace std compare(const _CharT* __s) const { size_type __size = this->size(); - int __r = traits_type::compare(_M_data(), __s, __size); + size_type __osize = traits_type::length(__s); + size_type __len = min(__size, __osize); + int __r = traits_type::compare(_M_data(), __s, __len); if (!__r) - __r = __size - traits_type::length(__s); + __r = __size - __osize; return __r; } -- cgit v1.2.1