]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Added data stack frames for most calls.
authorTimo Sirainen <tss@iki.fi>
Fri, 24 Oct 2014 19:11:50 +0000 (22:11 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 24 Oct 2014 19:11:50 +0000 (22:11 +0300)
So neither the callers nor the implementations need to worry about those so
much.

src/lib-storage/mail-storage.c
src/lib-storage/mail.c

index 5ecd03021c93d9a86c068447c0254d9c4ee425dc..45fd9875c29295aed4ca2e34eae2320a7e4e2fc2 100644 (file)
@@ -1952,7 +1952,9 @@ mailbox_save_alloc(struct mailbox_transaction_context *t)
 {
        struct mail_save_context *ctx;
 
-       ctx = t->box->v.save_alloc(t);
+       T_BEGIN {
+               ctx = t->box->v.save_alloc(t);
+       } T_END;
        i_assert(!ctx->unfinished);
        ctx->unfinished = TRUE;
        ctx->data.received_date = (time_t)-1;
@@ -2069,9 +2071,9 @@ int mailbox_save_begin(struct mail_save_context **ctx, struct istream *input)
                mail_storage_set_error(box->storage, MAIL_ERROR_NOTPOSSIBLE,
                                       "Saving messages not supported");
                ret = -1;
-       } else {
+       } else T_BEGIN {
                ret = box->v.save_begin(*ctx, input);
-       }
+       } T_END;
 
        if (ret < 0) {
                mailbox_save_cancel(ctx);
@@ -2082,7 +2084,12 @@ int mailbox_save_begin(struct mail_save_context **ctx, struct istream *input)
 
 int mailbox_save_continue(struct mail_save_context *ctx)
 {
-       return ctx->transaction->box->v.save_continue(ctx);
+       int ret;
+
+       T_BEGIN {
+               ret = ctx->transaction->box->v.save_continue(ctx);
+       } T_END;
+       return ret;
 }
 
 static void
@@ -2119,7 +2126,9 @@ int mailbox_save_finish(struct mail_save_context **_ctx)
        *_ctx = NULL;
 
        ctx->finishing = TRUE;
-       ret = t->box->v.save_finish(ctx);
+       T_BEGIN {
+               ret = t->box->v.save_finish(ctx);
+       } T_END;
        ctx->finishing = FALSE;
 
        if (ret == 0 && !copying_via_save) {
@@ -2141,7 +2150,9 @@ void mailbox_save_cancel(struct mail_save_context **_ctx)
        struct mail_private *mail;
 
        *_ctx = NULL;
-       ctx->transaction->box->v.save_cancel(ctx);
+       T_BEGIN {
+               ctx->transaction->box->v.save_cancel(ctx);
+       } T_END;
        if (keywords != NULL && !ctx->finishing)
                mailbox_keywords_unref(&keywords);
        if (ctx->dest_mail != NULL) {
@@ -2185,7 +2196,9 @@ int mailbox_copy(struct mail_save_context **_ctx, struct mail *mail)
                return -1;
        }
        ctx->finishing = TRUE;
-       ret = t->box->v.copy(ctx, backend_mail);
+       T_BEGIN {
+               ret = t->box->v.copy(ctx, backend_mail);
+       } T_END;
        ctx->finishing = FALSE;
        if (ret == 0) {
                if (pvt_flags != 0)
index dbb6f2edb92f98887a8969045541cedc05ed7a61..e7996ffdc010f24418ad7057e2dda865ce4186b1 100644 (file)
@@ -59,8 +59,12 @@ bool mail_set_uid(struct mail *mail, uint32_t uid)
 bool mail_prefetch(struct mail *mail)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       bool ret;
 
-       return p->v.prefetch(mail);
+       T_BEGIN {
+               ret = p->v.prefetch(mail);
+       } T_END;
+       return ret;
 }
 
 void mail_add_temp_wanted_fields(struct mail *mail,
@@ -110,75 +114,115 @@ const ARRAY_TYPE(keyword_indexes) *mail_get_keyword_indexes(struct mail *mail)
 int mail_get_parts(struct mail *mail, struct message_part **parts_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_parts(mail, parts_r);
+       T_BEGIN {
+               ret = p->v.get_parts(mail, parts_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_date(struct mail *mail, time_t *date_r, int *timezone_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_date(mail, date_r, timezone_r);
+       T_BEGIN {
+               ret = p->v.get_date(mail, date_r, timezone_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_received_date(struct mail *mail, time_t *date_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_received_date(mail, date_r);
+       T_BEGIN {
+               ret = p->v.get_received_date(mail, date_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_save_date(struct mail *mail, time_t *date_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_save_date(mail, date_r);
+       T_BEGIN {
+               ret = p->v.get_save_date(mail, date_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_virtual_size(struct mail *mail, uoff_t *size_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_virtual_size(mail, size_r);
+       T_BEGIN {
+               ret = p->v.get_virtual_size(mail, size_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_physical_size(struct mail *mail, uoff_t *size_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_physical_size(mail, size_r);
+       T_BEGIN {
+               ret = p->v.get_physical_size(mail, size_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_first_header(struct mail *mail, const char *field,
                          const char **value_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_first_header(mail, field, FALSE, value_r);
+       T_BEGIN {
+               ret = p->v.get_first_header(mail, field, FALSE, value_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_first_header_utf8(struct mail *mail, const char *field,
                               const char **value_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_first_header(mail, field, TRUE, value_r);
+       T_BEGIN {
+               ret = p->v.get_first_header(mail, field, TRUE, value_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_headers(struct mail *mail, const char *field,
                     const char *const **value_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_headers(mail, field, FALSE, value_r);
+       T_BEGIN {
+               ret = p->v.get_headers(mail, field, FALSE, value_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_headers_utf8(struct mail *mail, const char *field,
                          const char *const **value_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_headers(mail, field, TRUE, value_r);
+       T_BEGIN {
+               ret = p->v.get_headers(mail, field, TRUE, value_r);
+       } T_END;
+       return ret;
 }
 
 int mail_get_header_stream(struct mail *mail,
@@ -186,8 +230,12 @@ int mail_get_header_stream(struct mail *mail,
                           struct istream **stream_r)
 {
        struct mail_private *p = (struct mail_private *)mail;
+       int ret;
 
-       return p->v.get_header_stream(mail, headers, stream_r);
+       T_BEGIN {
+               ret = p->v.get_header_stream(mail, headers, stream_r);
+       } T_END;
+       return ret;
 }
 
 void mail_set_aborted(struct mail *mail)
@@ -333,7 +381,9 @@ void mail_expunge(struct mail *mail)
 {
        struct mail_private *p = (struct mail_private *)mail;
 
-       p->v.expunge(mail);
+       T_BEGIN {
+               p->v.expunge(mail);
+       } T_END;
 }
 
 void mail_set_expunged(struct mail *mail)