]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
minor optimization
authorTimo Sirainen <tss@iki.fi>
Sat, 19 Jun 2004 20:29:08 +0000 (23:29 +0300)
committerTimo Sirainen <tss@iki.fi>
Sat, 19 Jun 2004 20:29:08 +0000 (23:29 +0300)
--HG--
branch : HEAD

src/lib/istream-mmap.c

index 83fbc6d00bccc5035bc555741fe86af15dc740e7..0dd846ae5170cbc148de31a51b22bcc3ceac30d6 100644 (file)
@@ -113,19 +113,25 @@ static ssize_t _read(struct _istream *stream)
        i_assert((uoff_t)mstream->mmap_offset + stream->buffer_size <=
                 mstream->v_size);
 
-       mstream->mmap_base = mmap(NULL, stream->buffer_size,
-                                 PROT_READ, MAP_PRIVATE,
-                                 mstream->fd, mstream->mmap_offset);
-       if (mstream->mmap_base == MAP_FAILED) {
-               stream->istream.stream_errno = errno;
+       if (stream->buffer_size == 0) {
+               /* don't bother even trying mmap */
                mstream->mmap_base = NULL;
                stream->buffer = NULL;
-               stream->buffer_size = 0;
-               stream->skip = stream->pos = 0;
-               i_error("mmap_istream.mmap() failed: %m");
-               return -1;
+       } else {
+               mstream->mmap_base =
+                       mmap(NULL, stream->buffer_size, PROT_READ, MAP_PRIVATE,
+                            mstream->fd, mstream->mmap_offset);
+               if (mstream->mmap_base == MAP_FAILED) {
+                       stream->istream.stream_errno = errno;
+                       mstream->mmap_base = NULL;
+                       stream->buffer = NULL;
+                       stream->buffer_size = 0;
+                       stream->skip = stream->pos = 0;
+                       i_error("mmap_istream.mmap() failed: %m");
+                       return -1;
+               }
+               stream->buffer = mstream->mmap_base;
        }
-       stream->buffer = mstream->mmap_base;
 
        if (stream->buffer_size > mmap_pagesize) {
                if (madvise(mstream->mmap_base, stream->buffer_size,