From 54069f7c2c235dc9e302f96a6111bf6cd34a766b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20Abecasis?= Date: Wed, 13 Jan 2010 18:09:18 +0100 Subject: [PATCH] If the file is open, there must be an engine. Don't try to allocate one for QFile::handle and QFile::flush since they'll be useless there. Reviewed-by: Markus Goetz --- src/corelib/io/qfile.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index 7405339460..df470b96f5 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -1152,12 +1152,11 @@ bool QFile::open(int fd, OpenMode mode) int QFile::handle() const { - if (!isOpen()) + Q_D(const QFile); + if (!isOpen() || !d->fileEngine) return -1; - if (fileEngine()) - return d->fileEngine->handle(); - return -1; + return d->fileEngine->handle(); } /*! @@ -1353,7 +1352,11 @@ bool QFile::flush() { Q_D(QFile); - fileEngine(); + if (!d->fileEngine) { + qWarning("QFile::flush: No file engine. Is IODevice open?"); + return false; + } + if (!d->writeBuffer.isEmpty()) { qint64 size = d->writeBuffer.size(); if (_qfile_writeData(d->fileEngine, &d->writeBuffer) != size) { @@ -1394,7 +1397,7 @@ QFile::close() d->writeBuffer.clear(); // keep earlier error from flush - if (fileEngine()->close() && flushed) + if (d->fileEngine->close() && flushed) unsetError(); else if (flushed) d->setError(d->fileEngine->error(), d->fileEngine->errorString()); -- 2.11.4.GIT