From: Timo Sirainen Date: Sat, 30 Apr 2016 10:59:32 +0000 (+0300) Subject: global: Avoid using buffer_get_data() X-Git-Tag: 2.3.0.rc1~3850 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b88c43d09a288e99d439c78de4cc613212ea924c;p=thirdparty%2Fdovecot%2Fcore.git global: Avoid using buffer_get_data() Especially buffer_get_data(buf, NULL) generates worse code than just using buf->data directly. --- diff --git a/src/lib-imap/imap-base-subject.c b/src/lib-imap/imap-base-subject.c index 56f5a10a6c..272c1686d2 100644 --- a/src/lib-imap/imap-base-subject.c +++ b/src/lib-imap/imap-base-subject.c @@ -113,7 +113,7 @@ static bool remove_subj_leader(buffer_t *buf, size_t *start_pos, BLOBCHAR = %x01-5a / %x5c / %x5e-7f ; any CHAR except '[' and ']' */ - orig_data = buffer_get_data(buf, NULL); + orig_data = buf->data; orig_data += *start_pos; data = orig_data; @@ -157,7 +157,7 @@ static bool remove_blob_when_nonempty(buffer_t *buf, size_t *start_pos) { const char *data, *orig_data; - orig_data = buffer_get_data(buf, NULL); + orig_data = buf->data; orig_data += *start_pos; data = orig_data; if (*data == '[' && remove_blob(&data) && *data != '\0') { @@ -171,13 +171,12 @@ static bool remove_blob_when_nonempty(buffer_t *buf, size_t *start_pos) static bool remove_subj_fwd_hdr(buffer_t *buf, size_t *start_pos, bool *is_reply_or_forward_r) { - const char *data; - size_t size; + const char *data = buf->data; + size_t size = buf->used; /* subj-fwd = subj-fwd-hdr subject subj-fwd-trl subj-fwd-hdr = "[fwd:" subj-fwd-trl = "]" */ - data = buffer_get_data(buf, &size); if (strncmp(data + *start_pos, "[FWD:", 5) != 0) return FALSE; diff --git a/src/lib-index/mail-transaction-log-view.c b/src/lib-index/mail-transaction-log-view.c index da05361a6a..95b2b106ac 100644 --- a/src/lib-index/mail-transaction-log-view.c +++ b/src/lib-index/mail-transaction-log-view.c @@ -729,8 +729,8 @@ log_view_get_next(struct mail_transaction_log_view *view, file = view->cur; - data = buffer_get_data(file->buffer, &file_size); - file_size += file->buffer_offset; + data = file->buffer->data; + file_size = file->buffer->used + file->buffer_offset; if (view->cur_offset + sizeof(*hdr) > file_size) { mail_transaction_log_file_set_corrupted(file, diff --git a/src/lib-mail/istream-header-filter.c b/src/lib-mail/istream-header-filter.c index d772f6de86..6f87db9500 100644 --- a/src/lib-mail/istream-header-filter.c +++ b/src/lib-mail/istream-header-filter.c @@ -94,9 +94,8 @@ read_mixed(struct header_filter_istream *mstream, size_t body_highwater_size) if (mstream->crlf) buffer_append_c(mstream->hdr_buf, '\r'); buffer_append_c(mstream->hdr_buf, '\n'); - mstream->istream.buffer = - buffer_get_data(mstream->hdr_buf, - &mstream->istream.pos); + mstream->istream.buffer = mstream->hdr_buf->data; + mstream->istream.pos = mstream->hdr_buf->used; return mstream->hdr_buf->used - pos; } return ret; diff --git a/src/lib-mail/message-header-parser.c b/src/lib-mail/message-header-parser.c index 449667d750..3a0e020380 100644 --- a/src/lib-mail/message-header-parser.c +++ b/src/lib-mail/message-header-parser.c @@ -350,8 +350,8 @@ int message_parse_header_next(struct message_header_parser_ctx *ctx, buffer_append(ctx->value_buf, line->value, line->value_len); } - line->full_value = buffer_get_data(ctx->value_buf, - &line->full_value_len); + line->full_value = ctx->value_buf->data; + line->full_value_len = ctx->value_buf->used; } else { /* we didn't want full_value, and this is a continued line. */ line->full_value = NULL; diff --git a/src/lib-storage/index/index-mail-headers.c b/src/lib-storage/index/index-mail-headers.c index 5636e18406..3a9c70faa6 100644 --- a/src/lib-storage/index/index-mail-headers.c +++ b/src/lib-storage/index/index-mail-headers.c @@ -35,10 +35,9 @@ static void index_mail_parse_header_finish(struct index_mail *mail) { struct mail *_mail = &mail->mail.mail; const struct index_mail_line *lines; - const unsigned char *header, *data; + const unsigned char *header; const uint8_t *match; buffer_t *buf; - size_t data_size; unsigned int i, j, count, match_idx, match_count; bool noncontiguous; @@ -48,7 +47,7 @@ static void index_mail_parse_header_finish(struct index_mail *mail) lines = array_get(&mail->header_lines, &count); match = array_get(&mail->header_match, &match_count); - header = buffer_get_data(mail->header_data, NULL); + header = mail->header_data->data; buf = buffer_create_dynamic(pool_datastack_create(), 256); /* go through all the header lines we found */ @@ -118,9 +117,8 @@ static void index_mail_parse_header_finish(struct index_mail *mail) lines[j-1].end_pos - lines[i].start_pos); } - data = buffer_get_data(buf, &data_size); index_mail_cache_add_idx(mail, lines[i].field_idx, - data, data_size); + buf->data, buf->used); } for (; match_idx < match_count; match_idx++) { @@ -523,10 +521,9 @@ int index_mail_headers_get_envelope(struct index_mail *mail) static size_t get_header_size(buffer_t *buffer, size_t pos) { - const unsigned char *data; - size_t i, size; + const unsigned char *data = buffer->data; + size_t i, size = buffer->used; - data = buffer_get_data(buffer, &size); i_assert(pos <= size); for (i = pos; i < size; i++) { @@ -587,7 +584,7 @@ index_mail_get_parsed_header(struct index_mail *mail, unsigned int field_idx) first_line_idx = *line_idx - 1; p_array_init(&header_values, mail->mail.data_pool, 4); - header = buffer_get_data(mail->header_data, NULL); + header = mail->header_data->data; lines = array_get(&mail->header_lines, &lines_count); for (i = first_line_idx; i < lines_count; i++) { diff --git a/src/lib-storage/mail-search.c b/src/lib-storage/mail-search.c index 0deaf397e5..deba3f54f2 100644 --- a/src/lib-storage/mail-search.c +++ b/src/lib-storage/mail-search.c @@ -518,7 +518,7 @@ mail_search_args_analyze(struct mail_search_arg *args, return NULL; buffer_append(headers, &null, sizeof(const char *)); - return buffer_get_data(headers, NULL); + return headers->data; } static bool diff --git a/src/lib/array.c b/src/lib/array.c index 1c3fe0ec0e..fa0959c6e5 100644 --- a/src/lib/array.c +++ b/src/lib/array.c @@ -143,7 +143,7 @@ void *array_bsearch_i(struct array *array, const void *key, const void *array_lsearch_i(const struct array *array, const void *key, int (*cmp)(const void *, const void *)) { - const void * const data = buffer_get_data(array->buffer, NULL); + const void * const data = array->buffer->data; const unsigned int s = array->element_size; unsigned int idx; diff --git a/src/lib/str.c b/src/lib/str.c index ba837d9c3b..0b54a0252b 100644 --- a/src/lib/str.c +++ b/src/lib/str.c @@ -64,12 +64,12 @@ char *str_free_without_data(string_t **str) const char *str_c(string_t *str) { str_add_nul(str); - return buffer_get_data(str, NULL); + return str->data; } const unsigned char *str_data(const string_t *str) { - return buffer_get_data(str, NULL); + return str->data; } char *str_c_modifiable(string_t *str) @@ -119,11 +119,7 @@ void str_append_c(string_t *str, unsigned char chr) void str_append_str(string_t *dest, const string_t *src) { - const char *cstr; - size_t len; - - cstr = buffer_get_data(src, &len); - buffer_append(dest, cstr, len); + buffer_append(dest, src->data, src->used); } void str_printfa(string_t *str, const char *fmt, ...)