src/corelib/io/qiodevice.cpp
changeset 23 89e065397ea6
parent 22 79de32ba3296
child 25 e24348a560a6
--- a/src/corelib/io/qiodevice.cpp	Fri May 14 16:40:13 2010 +0300
+++ b/src/corelib/io/qiodevice.cpp	Thu May 27 13:40:48 2010 +0300
@@ -755,7 +755,6 @@
 qint64 QIODevice::read(char *data, qint64 maxSize)
 {
     Q_D(QIODevice);
-    CHECK_READABLE(read, qint64(-1));
 
 #if defined QIODEVICE_DEBUG
     printf("%p QIODevice::read(%p, %d), d->pos = %d, d->buffer.size() = %d\n",
@@ -786,13 +785,13 @@
     do {
         // Try reading from the buffer.
         int lastReadChunkSize = d->buffer.read(data, maxSize);
-        *d->pPos += lastReadChunkSize;
-        readSoFar += lastReadChunkSize;
-        // fast exit when satisfied by buffer
-        if (lastReadChunkSize == maxSize && !(d->openMode & Text))
-            return readSoFar;
+        if (lastReadChunkSize > 0) {
+            *d->pPos += lastReadChunkSize;
+            readSoFar += lastReadChunkSize;
+            // fast exit when satisfied by buffer
+            if (lastReadChunkSize == maxSize && !(d->openMode & Text))
+                return readSoFar;
 
-        if (lastReadChunkSize > 0) {
             data += lastReadChunkSize;
             maxSize -= lastReadChunkSize;
 #if defined QIODEVICE_DEBUG