From: Timo Sirainen Date: Tue, 27 Dec 2022 10:55:02 +0000 (-0500) Subject: lib-index: Add data stack frames X-Git-Tag: 2.4.0~3226 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6cd5989e9e4b76ecd0ca92f5264382ae7a71681;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Add data stack frames These functions are using data stack a bit unexpectedly. May help a bit with memory usage, but likely not much. --- diff --git a/src/lib-index/mail-index-map-read.c b/src/lib-index/mail-index-map-read.c index 6999bf1511..ac3e38f659 100644 --- a/src/lib-index/mail-index-map-read.c +++ b/src/lib-index/mail-index-map-read.c @@ -464,8 +464,9 @@ mail_index_map_latest_sync(struct mail_index *index, return ret; } -int mail_index_map(struct mail_index *index, - enum mail_index_sync_handler_type type) +static int +mail_index_map_real(struct mail_index *index, + enum mail_index_sync_handler_type type) { const char *reason; int ret; @@ -517,3 +518,13 @@ int mail_index_map(struct mail_index *index, index->mapping = FALSE; return ret; } + +int mail_index_map(struct mail_index *index, + enum mail_index_sync_handler_type type) +{ + int ret; + T_BEGIN { + ret = mail_index_map_real(index, type); + } T_END; + return ret; +} diff --git a/src/lib-index/mail-index-sync.c b/src/lib-index/mail-index-sync.c index c847f1cc01..097bd45168 100644 --- a/src/lib-index/mail-index-sync.c +++ b/src/lib-index/mail-index-sync.c @@ -429,8 +429,10 @@ mail_index_sync_begin_to2(struct mail_index *index, if (log_file_seq != (uint32_t)-1) flags |= MAIL_INDEX_SYNC_FLAG_REQUIRE_CHANGES; - ret = mail_index_sync_begin_init(index, flags, log_file_seq, - log_file_offset); + T_BEGIN { + ret = mail_index_sync_begin_init(index, flags, log_file_seq, + log_file_offset); + } T_END; if (ret <= 0) return ret; diff --git a/src/lib-index/mail-index-transaction.c b/src/lib-index/mail-index-transaction.c index 0c61170a18..d8245a3d9f 100644 --- a/src/lib-index/mail-index-transaction.c +++ b/src/lib-index/mail-index-transaction.c @@ -230,9 +230,12 @@ static int mail_index_transaction_commit_v(struct mail_index_transaction *t, mail_index_view_get_messages_count(t->view)); changed = MAIL_INDEX_TRANSACTION_HAS_CHANGES(t) || t->reset; - ret = !changed ? 0 : - mail_index_transaction_commit_real(t, &result_r->commit_size, - &result_r->changes_mask); + if (!changed) + ret = 0; + else T_BEGIN { + ret = mail_index_transaction_commit_real(t, + &result_r->commit_size, &result_r->changes_mask); + } T_END; mail_transaction_log_get_head(index->log, &result_r->log_file_seq, &result_r->log_file_offset);