QIODevice::atEnd(): fix debug message output

For sequential devices, duplicated bytesAvailable() calls can produce
different results. To avoid a wrong output, print exactly the same
value as would be returned.

Change-Id: I02615dd7375516f7b263eea56bfcf15e2889e6e3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
bb10
Alex Trotsenko 2015-06-12 11:49:24 +03:00
parent 895dbac454
commit a851868e63
1 changed files with 4 additions and 3 deletions

View File

@ -693,12 +693,13 @@ bool QIODevice::seek(qint64 pos)
bool QIODevice::atEnd() const
{
Q_D(const QIODevice);
const bool result = (d->openMode == NotOpen || (d->buffer.isEmpty()
&& bytesAvailable() == 0));
#if defined QIODEVICE_DEBUG
printf("%p QIODevice::atEnd() returns %s, d->openMode == %d, d->pos == %lld\n", this,
(d->openMode == NotOpen || d->pos == size()) ? "true" : "false", int(d->openMode),
d->pos);
result ? "true" : "false", int(d->openMode), d->pos);
#endif
return d->openMode == NotOpen || (d->buffer.isEmpty() && bytesAvailable() == 0);
return result;
}
/*!