]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: MAIL_INDEX_OPEN_FLAG_SAVEONLY was buggy when reading data near end of...
authorTimo Sirainen <tss@iki.fi>
Tue, 18 Dec 2012 20:07:36 +0000 (22:07 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 18 Dec 2012 20:07:36 +0000 (22:07 +0200)
We assumed that we read as much as we requested, even if the file was
smaller.

src/lib-index/mail-cache.c

index 550f2bcb0f3ab41eb083100a8080c51fa24409e6..ccb0237395d05367fbae28a2db6b7419352a9ce4 100644 (file)
@@ -346,11 +346,12 @@ mail_cache_map_with_read(struct mail_cache *cache, size_t offset, size_t size,
        buffer_set_used_size(cache->read_buf, ret);
 
        cache->read_offset = offset;
-       cache->mmap_length = offset + size;
+       cache->mmap_length = offset + cache->read_buf->used;
 
        *data_r = data;
        hdr_data = offset == 0 ? *data_r : NULL;
-       return mail_cache_map_finish(cache, offset, size, hdr_data, TRUE);
+       return mail_cache_map_finish(cache, offset,
+                                    cache->read_buf->used, hdr_data, TRUE);
 }
 
 int mail_cache_map(struct mail_cache *cache, size_t offset, size_t size,