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/20 23:09:30 UTC
svn commit: r658434 - /stdcxx/branches/4.2.x/include/loc/_ctype.h
Author: sebor
Date: Tue May 20 14:09:30 2008
New Revision: 658434
URL: http://svn.apache.org/viewvc?rev=658434&view=rev
Log:
2008-05-20 Martin Sebor <se...@roguewave.com>
STDCXX-941
* include/loc/_ctype.h (narrow): Silenced the useless HP aCC 3
Warning (suggestion) 887: Type 'unsigned int' is smaller than
type 'unsigned long', unwanted widening in value may result.
Regression introduced in 4.2.1 (in r649646).
Modified:
stdcxx/branches/4.2.x/include/loc/_ctype.h
Modified: stdcxx/branches/4.2.x/include/loc/_ctype.h
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_ctype.h?rev=658434&r1=658433&r2=658434&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_ctype.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_ctype.h Tue May 20 14:09:30 2008
@@ -25,7 +25,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2005 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -541,7 +541,11 @@
inline char
ctype<wchar_t>::narrow (char_type __c, char __dfault) const
{
- const _RWSTD_SIZE_T __inx = _RWSTD_STATIC_CAST (_RWSTD_UWCHAR_INT_T, __c);
+ // carefully convert wchar_t to the unsigned form of its
+ // underlying integer type, avoiding sign extension and
+ // similar issues
+ const _RWSTD_UWCHAR_INT_T __inx =
+ _RWSTD_STATIC_CAST (_RWSTD_UWCHAR_INT_T, __c);
// optimize away all but the first call to the virtual do_widen()
if ( __inx < sizeof _C_narrow_tab / sizeof *_C_narrow_tab