dovecot: buffer_reset(buf) and buffer_set_used_size(buf, 0) now ...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Feb 29 03:30:42 EET 2008
details: http://hg.dovecot.org/dovecot/rev/7995da69b348
changeset: 7298:7995da69b348
user: Timo Sirainen <tss at iki.fi>
date: Fri Feb 29 03:33:30 2008 +0200
description:
buffer_reset(buf) and buffer_set_used_size(buf, 0) now do the same thing.
diffstat:
1 file changed, 10 insertions(+), 8 deletions(-)
src/lib/buffer.c | 18 ++++++++++--------
diffs (42 lines):
diff -r 1b8277a36723 -r 7995da69b348 src/lib/buffer.c
--- a/src/lib/buffer.c Fri Feb 29 03:31:02 2008 +0200
+++ b/src/lib/buffer.c Fri Feb 29 03:33:30 2008 +0200
@@ -47,6 +47,12 @@ buffer_check_limits(struct real_buffer *
}
new_size = pos + data_size;
+ if (new_size > buf->used && buf->used < buf->dirty) {
+ /* clear used..dirty area */
+ size_t max = I_MIN(I_MIN(buf->alloc, buf->dirty), new_size);
+
+ memset(buf->w_buffer + buf->used, 0, max - buf->used);
+ }
if (new_size > buf->alloc) {
if (unlikely(!buf->dynamic)) {
i_panic("Buffer full (%"PRIuSIZE_T" > %"PRIuSIZE_T", "
@@ -142,13 +148,9 @@ pool_t buffer_get_pool(buffer_t *_buf)
return buf->pool;
}
-void buffer_reset(buffer_t *_buf)
-{
- struct real_buffer *buf = (struct real_buffer *)_buf;
-
- memset(buf->w_buffer, 0, I_MAX(buf->used, buf->dirty));
- buf->dirty = 0;
- buf->used = 0;
+void buffer_reset(buffer_t *buf)
+{
+ buffer_set_used_size(buf, 0);
}
void buffer_write(buffer_t *_buf, size_t pos,
@@ -287,7 +289,7 @@ void buffer_set_used_size(buffer_t *_buf
i_assert(used_size <= buf->alloc);
- if (used_size < buf->used && buf->used > buf->dirty)
+ if (buf->used > buf->dirty)
buf->dirty = buf->used;
buf->used = used_size;
More information about the dovecot-cvs
mailing list