aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-01-24 12:20:57 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-01-24 12:20:57 +0000
commit3b1685954ebb7893e6bd2643a6a473ac4fe15d47 (patch)
tree49d8c4182c60053772a7d9be801b9d89d3970aca
parentaa46b1072d5729a375bd2a3b31b0ca04c5d29ed4 (diff)
2013-01-24 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/56085 * include/std/complex (pow(const complex<>&, int)): Avoid __n signed overflow. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195421 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/std/complex6
2 files changed, 8 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d60eb9b0a8f..22f0851be56 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2013-01-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/56085
+ * include/std/complex (pow(const complex<>&, int)): Avoid __n
+ signed overflow.
+
2013-01-22 Jakub Jelinek <jakub@redhat.com>
* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex
index b13b11becc5..fe3f2674e16 100644
--- a/libstdc++-v3/include/std/complex
+++ b/libstdc++-v3/include/std/complex
@@ -1,8 +1,6 @@
// The template and inlines for the -*- C++ -*- complex number classes.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
-// Free Software Foundation, Inc.
+// Copyright (C) 1997-2013 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
@@ -978,7 +976,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
pow(const complex<_Tp>& __z, int __n)
{
return __n < 0
- ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -__n)
+ ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n)
: std::__complex_pow_unsigned(__z, __n);
}
#endif