]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2010-06-09 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jun 2010 09:15:51 +0000 (09:15 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jun 2010 09:15:51 +0000 (09:15 +0000)
PR libstdc++/44413
* include/ext/vstring_util.h (__vstring_utility<>::_S_compare):
Simplify, just return -1, 0, 1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160456 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/vstring_util.h

index db2c20646dd1dc8416bd4298eb7b46018f28b01c..edb1519046cc98f9673054058e367d767d762fd8 100644 (file)
@@ -1,3 +1,9 @@
+2010-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/44413
+       * include/ext/vstring_util.h (__vstring_utility<>::_S_compare):
+       Simplify, just return -1, 0, 1.
+
 2010-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/std/type_traits (has_nothrow_assign): Rename to
index 4042f70692ed0d5ac02e2ef7587db66b653cc893..a9c88d467a01b06bd6b73b9fbab3c8d5cf882ac6 100644 (file)
@@ -1,6 +1,7 @@
 // Versatile string utility -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -50,10 +51,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
     {
       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
 
-      typedef _Traits                                      traits_type;      
+      typedef _Traits                                      traits_type;
       typedef typename _Traits::char_type                  value_type;
       typedef typename _CharT_alloc_type::size_type        size_type;
-      typedef typename _CharT_alloc_type::difference_type   difference_type;      
+      typedef typename _CharT_alloc_type::difference_type   difference_type;
       typedef typename _CharT_alloc_type::pointer          pointer;
       typedef typename _CharT_alloc_type::const_pointer            const_pointer;
 
@@ -164,14 +165,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
       static int
       _S_compare(size_type __n1, size_type __n2)
       {
-       const difference_type __d = difference_type(__n1 - __n2);
-
-       if (__d > __numeric_traits_integer<int>::__max)
-         return __numeric_traits_integer<int>::__max;
-       else if (__d < __numeric_traits_integer<int>::__min)
-         return __numeric_traits_integer<int>::__min;
-       else
-         return int(__d);
+       const difference_type __d = __n1 - __n2;
+       return __d == 0 ? 0 : (__d > 0 ? 1 : -1);
       }
     };