From: Timo Sirainen Date: Sat, 19 Jun 2004 20:29:08 +0000 (+0300) Subject: minor optimization X-Git-Tag: 1.1.alpha1~3924 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67c24901ac5e1521e38a91efc452faeb3e2135a1;p=thirdparty%2Fdovecot%2Fcore.git minor optimization --HG-- branch : HEAD --- 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,