summaryrefslogtreecommitdiffstats
path: root/thirdparty/assimp/code/Common/DefaultIOStream.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2020-03-06 14:42:31 +0100
committerRémi Verschelde <rverschelde@gmail.com>2020-03-06 14:43:31 +0100
commit78b22393a8dd182ee56d0448ed77ba4430de5e75 (patch)
treeb117ded652a479692041ba5cafba15cfc2a754b5 /thirdparty/assimp/code/Common/DefaultIOStream.cpp
parent9d8a9ea826ac733e7076d567ef2a6b5200de68c4 (diff)
downloadredot-engine-78b22393a8dd182ee56d0448ed77ba4430de5e75.tar.gz
assimp: Sync with upstream 0201fc5
Diffstat (limited to 'thirdparty/assimp/code/Common/DefaultIOStream.cpp')
-rw-r--r--thirdparty/assimp/code/Common/DefaultIOStream.cpp35
1 files changed, 32 insertions, 3 deletions
diff --git a/thirdparty/assimp/code/Common/DefaultIOStream.cpp b/thirdparty/assimp/code/Common/DefaultIOStream.cpp
index 1c100b6189..205f19e378 100644
--- a/thirdparty/assimp/code/Common/DefaultIOStream.cpp
+++ b/thirdparty/assimp/code/Common/DefaultIOStream.cpp
@@ -3,7 +3,7 @@
Open Asset Import Library (assimp)
---------------------------------------------------------------------------
-Copyright (c) 2006-2019, assimp team
+Copyright (c) 2006-2020, assimp team
@@ -52,6 +52,35 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using namespace Assimp;
+namespace
+{
+ template<size_t sizeOfPointer>
+ size_t select_ftell(FILE* file)
+ {
+ return ::ftell(file);
+ }
+
+ template<size_t sizeOfPointer>
+ int select_fseek(FILE* file, int64_t offset, int origin)
+ {
+ return ::fseek(file, static_cast<long>(offset), origin);
+ }
+
+#if defined _WIN32 && (!defined __GNUC__ || __MSVCRT_VERSION__ >= 0x0601)
+ template<>
+ size_t select_ftell<8>(FILE* file)
+ {
+ return ::_ftelli64(file);
+ }
+
+ template<>
+ int select_fseek<8>(FILE* file, int64_t offset, int origin)
+ {
+ return ::_fseeki64(file, offset, origin);
+ }
+#endif
+}
+
// ----------------------------------------------------------------------------------
DefaultIOStream::~DefaultIOStream()
{
@@ -93,7 +122,7 @@ aiReturn DefaultIOStream::Seek(size_t pOffset,
aiOrigin_END == SEEK_END && aiOrigin_SET == SEEK_SET");
// do the seek
- return (0 == ::fseek(mFile, (long)pOffset,(int)pOrigin) ? AI_SUCCESS : AI_FAILURE);
+ return (0 == select_fseek<sizeof(void*)>(mFile, (int64_t)pOffset,(int)pOrigin) ? AI_SUCCESS : AI_FAILURE);
}
// ----------------------------------------------------------------------------------
@@ -102,7 +131,7 @@ size_t DefaultIOStream::Tell() const
if (!mFile) {
return 0;
}
- return ::ftell(mFile);
+ return select_ftell<sizeof(void*)>(mFile);
}
// ----------------------------------------------------------------------------------