dovecot-2.2: fts-lucene: Don't allocate large amounts of memory ...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Apr 15 20:28:43 UTC 2014
details: http://hg.dovecot.org/dovecot-2.2/rev/2ef62e1f44f2
changeset: 17218:2ef62e1f44f2
user: Timo Sirainen <tss at iki.fi>
date: Tue Apr 15 22:28:26 2014 +0200
description:
fts-lucene: Don't allocate large amounts of memory from stack.
This probably only happened for huge header values.
diffstat:
src/plugins/fts-lucene/lucene-wrapper.cc | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diffs (24 lines):
diff -r 0ec7e1e1db48 -r 2ef62e1f44f2 src/plugins/fts-lucene/lucene-wrapper.cc
--- a/src/plugins/fts-lucene/lucene-wrapper.cc Tue Apr 15 18:24:31 2014 +0200
+++ b/src/plugins/fts-lucene/lucene-wrapper.cc Tue Apr 15 22:28:26 2014 +0200
@@ -535,7 +535,11 @@
}
datasize = uni_utf8_strlen_n(data, size) + 1;
- wchar_t dest[datasize];
+ wchar_t *dest, *dest_free = NULL;
+ if (datasize < 4096)
+ dest = (wchar_t *)t_malloc(datasize);
+ else
+ dest = dest_free = (wchar_t *)i_malloc(datasize);
lucene_utf8_n_to_tchar(data, size, dest, datasize);
lucene_data_translate(index, dest, datasize);
@@ -556,6 +560,7 @@
index->cur_analyzer = guess_analyzer(index, data, size);
index->doc->add(*_CLNEW Field(_T("body"), dest, Field::STORE_NO | Field::INDEX_TOKENIZED));
}
+ i_free(dest_free);
return 0;
}
More information about the dovecot-cvs
mailing list