783 qint64 readSoFar = 0; |
783 qint64 readSoFar = 0; |
784 bool moreToRead = true; |
784 bool moreToRead = true; |
785 do { |
785 do { |
786 // Try reading from the buffer. |
786 // Try reading from the buffer. |
787 int lastReadChunkSize = d->buffer.read(data, maxSize); |
787 int lastReadChunkSize = d->buffer.read(data, maxSize); |
788 *d->pPos += lastReadChunkSize; |
|
789 readSoFar += lastReadChunkSize; |
|
790 // fast exit when satisfied by buffer |
|
791 if (lastReadChunkSize == maxSize && !(d->openMode & Text)) |
|
792 return readSoFar; |
|
793 |
|
794 if (lastReadChunkSize > 0) { |
788 if (lastReadChunkSize > 0) { |
|
789 *d->pPos += lastReadChunkSize; |
|
790 readSoFar += lastReadChunkSize; |
|
791 // fast exit when satisfied by buffer |
|
792 if (lastReadChunkSize == maxSize && !(d->openMode & Text)) |
|
793 return readSoFar; |
|
794 |
795 data += lastReadChunkSize; |
795 data += lastReadChunkSize; |
796 maxSize -= lastReadChunkSize; |
796 maxSize -= lastReadChunkSize; |
797 #if defined QIODEVICE_DEBUG |
797 #if defined QIODEVICE_DEBUG |
798 printf("%p \treading %d bytes from buffer into position %d\n", this, lastReadChunkSize, |
798 printf("%p \treading %d bytes from buffer into position %d\n", this, lastReadChunkSize, |
799 int(readSoFar) - lastReadChunkSize); |
799 int(readSoFar) - lastReadChunkSize); |