Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2971:1f7bcbb09f90 HEAD
When building cache key, use each %key only once, more wastes only memory.
This was mostly needed for more complex SQL queries where same key could be
used multiple times.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 15 Dec 2004 20:06:47 +0200 |
parents | e2876940968e |
children | 7c4238c78aee |
files | src/auth/auth-cache.c |
diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-cache.c Wed Dec 15 19:52:17 2004 +0200 +++ b/src/auth/auth-cache.c Wed Dec 15 20:06:47 2004 +0200 @@ -30,16 +30,22 @@ char *auth_cache_parse_key(const char *query) { string_t *str; + char key_seen[256]; + + memset(key_seen, 0, sizeof(key_seen)); str = str_new(default_pool, 32); for (; *query != '\0'; query++) { if (*query == '%' && query[1] != '\0') { query++; - if (*query != '%') { + if (*query != '%' && !key_seen[(uint8_t)*query]) { if (str_len(str) != 0) str_append_c(str, '\t'); str_append_c(str, '%'); str_append_c(str, *query); + + /* @UNSAFE */ + key_seen[(uint8_t)*query] = 1; } } }