0030130: Coding Rules - MSVC 2017 gives warnings about using of std::fpos::seekpos...
authorabv <abv@opencascade.com>
Wed, 12 Sep 2018 19:38:38 +0000 (22:38 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 13 Sep 2018 17:45:08 +0000 (20:45 +0300)
Use of deprecated method std::fpos::seekpos() is avoided with MSVC 11 (Visual Studio 2012) and above.

src/RWStl/RWStl_Reader.cxx

index 19e22a3..89f5cb9 100644 (file)
@@ -223,7 +223,10 @@ Standard_Boolean RWStl_Reader::IsAscii (Standard_IStream& theStream)
 #endif
 
 // Macro to get 64-bit position of the file from streampos
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) && _MSC_VER < 1700
+  // In MSVC 2010, cast of streampos to 64-bit int is implemented incorrectly;
+  // work-around (relevant for files larger than 4 GB) is to use internal function seekpos(). 
+  // Since MSVC 15.8, seekpos() is deprecated and is said to always return 0.
   #define GETPOS(aPos) aPos.seekpos()
 #else
   #define GETPOS(aPos) ((int64_t)aPos)