Patchwork [v3] libstdc++/56085

login
register
mail settings
Submitter Paolo Carlini
Date Jan. 24, 2013, 12:23 p.m.
Message ID <510127C6.5080100@oracle.com>
Download mbox | patch
Permalink /patch/215338/
State New
Headers show

Comments

Paolo Carlini - Jan. 24, 2013, 12:23 p.m.
Hi,

tested x86_64-linux, committed mainline and 4_7-branch.

Thanks,
Paolo.

///////////////////////
2013-01-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56085
	* include/std/complex (pow(const complex<>&, int)): Avoid __n
	signed overflow.

Patch

Index: include/std/complex
===================================================================
--- include/std/complex	(revision 195420)
+++ include/std/complex	(working copy)
@@ -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 @@ 
     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