From 2ad49361eeb1ad14a2b9c6c95a9d20d20f9aa851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Fri, 23 Oct 2009 11:23:55 +0200 Subject: On Windows, report a 0 file size for streams and other funny files Obtain file size directly, instead of relying on fseek/ftell and messing with the file position. Also changed the return value on errors to 0. This is mostly relevant on streams and pipes, where we used to return whatever error value ftell returned (usually -1). This change also makes the return value consistent with what is returned on Unix platforms and what we document for Windows CE. Nevertheless, documentation of this and related issues is misleading and needs to be updated. Reviewed-by: Markus Goetz --- src/corelib/io/qfsfileengine_win.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index 151eabd..b8a16fa 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -499,11 +499,8 @@ qint64 QFSFileEnginePrivate::nativeSize() const // Buffered stdlib mode. if (fh) { - QT_OFF_T oldPos = QT_FTELL(fh); - QT_FSEEK(fh, 0, SEEK_END); - QT_OFF_T fileSize = QT_FTELL(fh); - QT_FSEEK(fh, oldPos, SEEK_SET); - return qint64(fileSize); + qint64 fileSize = _filelengthi64(QT_FILENO(fh)); + return (fileSize == -1) ? 0 : fileSize; } // Not-open mode, where the file name is known: We'll check the -- cgit v0.12