dovecot: message_header_decode(): Don't use t_push/t_pop. The ca...

dovecot at dovecot.org dovecot at dovecot.org
Sat Oct 6 03:17:17 EEST 2007


details:   http://hg.dovecot.org/dovecot/rev/58d9f94b9919
changeset: 6537:58d9f94b9919
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Oct 06 03:17:13 2007 +0300
description:
message_header_decode(): Don't use t_push/t_pop. The callback may want to
write to a buffer in data stack.

diffstat:

1 file changed, 3 insertions(+), 5 deletions(-)
src/lib-mail/message-header-decode.c |    8 +++-----

diffs (32 lines):

diff -r 2a2fd5c3b42e -r 58d9f94b9919 src/lib-mail/message-header-decode.c
--- a/src/lib-mail/message-header-decode.c	Sat Oct 06 03:08:48 2007 +0300
+++ b/src/lib-mail/message-header-decode.c	Sat Oct 06 03:17:13 2007 +0300
@@ -65,7 +65,6 @@ void message_header_decode(const unsigne
 	size_t pos, start_pos;
 
 	/* =?charset?Q|B?text?= */
-	t_push();
 	start_pos = pos = 0;
 	for (pos = 0; pos + 1 < size; ) {
 		if (data[pos] != '=' || data[pos+1] != '?') {
@@ -84,9 +83,8 @@ void message_header_decode(const unsigne
 		}
 
 		if (decodebuf == NULL) {
-			decodebuf =
-				buffer_create_dynamic(pool_datastack_create(),
-						      size - pos);
+			decodebuf = buffer_create_dynamic(default_pool,
+							  size - pos);
 		} else {
 			buffer_set_used_size(decodebuf, 0);
 		}
@@ -113,7 +111,7 @@ void message_header_decode(const unsigne
 		(void)callback(data + start_pos, size - start_pos,
 			       NULL, context);
 	}
-	t_pop();
+	buffer_free(&decodebuf);
 }
 
 struct decode_utf8_context {


More information about the dovecot-cvs mailing list