Author: faridz
Date: Thu Oct  4 07:37:59 2007
New Revision: 581929

URL: http://svn.apache.org/viewvc?rev=581929&view=rev
Log:
2007-10-04 Farid Zaripov <[EMAIL PROTECTED]>

        STDCXX-564
        * _punct.cc (__rw_match_name): Cast 1UL constant to _RWSTD_SIZE_T
        to avoid 64-bit MSVC warning C4334: '<<' : result of 32-bit shift
        implicitly converted to 64 bits (was 64-bit shift intended?).
        * file.cpp [_WIN64]: Disable 64-bit MSVC warning C4244 for
        __rw_fseek(), __rw_fread(), __rw_fwrite() functions.

Modified:
    incubator/stdcxx/branches/4.2.0/include/loc/_punct.cc
    incubator/stdcxx/branches/4.2.0/src/file.cpp

Modified: incubator/stdcxx/branches/4.2.0/include/loc/_punct.cc
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.0/include/loc/_punct.cc?rev=581929&r1=581928&r2=581929&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.0/include/loc/_punct.cc (original)
+++ incubator/stdcxx/branches/4.2.0/include/loc/_punct.cc Thu Oct  4 07:37:59 
2007
@@ -87,7 +87,10 @@
 
             typedef _STD::char_traits<_CharT> _Traits;
 
-            if (__bits & 1UL << __k) {
+            const _RWSTD_SIZE_T __mask =
+                _RWSTD_STATIC_CAST(_RWSTD_SIZE_T, 1UL) << __k;
+
+            if (__bits & __mask) {
                 // `name' is still in the set, see if the next char matches
                 // (case insensitive comparison done if `ctp' is nonzero)
                 if (   __pos < __sizes [__k]
@@ -108,7 +111,7 @@
 
                         // this match is a duplicate of the last best one
                         // remove this match from the set
-                        __bits &= ~(1UL << __k);
+                        __bits &= ~__mask;
                         --__nmatch;
                     }
                     else if (   __sizes [__k] < __sizes [__inx]
@@ -137,7 +140,7 @@
 
                     // clear the bit for the `name' that failed to match
                     // and decrement the numeber of matches
-                    __bits &= ~(1UL << __k);
+                    __bits &= ~__mask;
                     --__nmatch;
                 }
             }

Modified: incubator/stdcxx/branches/4.2.0/src/file.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.0/src/file.cpp?rev=581929&r1=581928&r2=581929&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.0/src/file.cpp (original)
+++ incubator/stdcxx/branches/4.2.0/src/file.cpp Thu Oct  4 07:37:59 2007
@@ -475,13 +475,18 @@
 }
 
 
+#ifdef _WIN64
+// disable MSVC warning: conversion from '__int64' to 'long', possible loss of 
data
+#pragma warning (disable: 4244)
+#endif
+
 _RWSTD_EXPORT long
 __rw_fseek (void *file, int flags, _RWSTD_PTRDIFF_T offset, int origin)
 {
     if (flags & _RWSTD_IOS_STDIO) {
         FILE* const fp = _RWSTD_STATIC_CAST (FILE*, file);
 
-        const int pos = fseek (fp, offset, origin);
+        const int pos = fseek (fp, long (offset), origin);
         if (pos < 0)
             return long (pos);
 
@@ -522,6 +527,11 @@
 
     return write (fd, buf, size);
 }
+
+#ifdef _WIN64
+// restore MSVC warning: conversion from '__int64' to 'long', possible loss of 
data
+#pragma warning (default: 4244)
+#endif
 
 
 _RWSTD_EXPORT extern const void* __rw_std_streams[];


Reply via email to