From 67c24901ac5e1521e38a91efc452faeb3e2135a1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 19 Jun 2004 23:29:08 +0300 Subject: [PATCH] minor optimization --HG-- branch : HEAD --- src/lib/istream-mmap.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/lib/istream-mmap.c b/src/lib/istream-mmap.c index 83fbc6d00b..0dd846ae51 100644 --- a/src/lib/istream-mmap.c +++ b/src/lib/istream-mmap.c @@ -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, -- 2.47.3