Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2182:4e559fad61fb HEAD
minor optimization
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 19 Jun 2004 23:29:08 +0300 |
parents | 7d4e10c5bd93 |
children | 1b0153eb3fa5 |
files | src/lib/istream-mmap.c |
diffstat | 1 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/istream-mmap.c Sat Jun 19 23:22:00 2004 +0300 +++ b/src/lib/istream-mmap.c Sat Jun 19 23:29:08 2004 +0300 @@ -113,19 +113,25 @@ 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,