You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2008/05/05 05:19:27 UTC

svn commit: r653293 - /stdcxx/trunk/tests/localization/22.locale.num.put.cpp

Author: sebor
Date: Sun May  4 20:19:27 2008
New Revision: 653293

URL: http://svn.apache.org/viewvc?rev=653293&view=rev
Log:
2008-05-04  Martin Sebor  <se...@roguewave.com>

	STDCXX-788
	* 22.locale.num.put.cpp (do_tesT): Cast narrow character to unsigned
	char before converting it to the generic charT to avoid potential sign
	extension and to silence HP aCC 6 remark #4271-D: type conversion may
	lose sign.
	(long_test): Cast macro argument to unsigned type before shifting it
	left to avoid an arithmetic overflow and to silence HP aCC 6 remark
	#4300-D: Overflow while computing constant in left shift operation.

Modified:
    stdcxx/trunk/tests/localization/22.locale.num.put.cpp

Modified: stdcxx/trunk/tests/localization/22.locale.num.put.cpp
URL: http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.put.cpp?rev=653293&r1=653292&r2=653293&view=diff
==============================================================================
--- stdcxx/trunk/tests/localization/22.locale.num.put.cpp (original)
+++ stdcxx/trunk/tests/localization/22.locale.num.put.cpp Sun May  4 20:19:27 2008
@@ -22,7 +22,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -328,7 +328,12 @@
 
 #endif   // _RWSTD_LDBL_MAX_10_EXP
 
-    const charT* const bufend = np.put (buf, ios, fill, val);
+    // cast the narrow fill character to unsigned char before
+    // converting it to charT to avoid potential sign extension
+    typedef unsigned char UChar;
+    const charT wfill = charT (UChar (fill));
+
+    const charT* const bufend = np.put (buf, ios, wfill, val);
 
     // verify 22.2.2.2.2, p21
     if (ios.width ()) {
@@ -1171,7 +1176,7 @@
 
     // locale 3.0 extension
 
-#define BASE(n)   ((n)  << _RWSTD_IOS_BASEOFF)
+#define BASE(n)   int (unsigned (n)  << _RWSTD_IOS_BASEOFF)
 
     // bases 0 and 10 are both base 10
     // base 1 is roman (values 1 through 4999)