diff options
author | Daiki Ueno <ueno@gnu.org> | 2021-03-09 13:07:26 +0100 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2021-04-04 10:20:59 +0200 |
commit | 54e161b9dabe4bd3b08b532475294a37c7562b45 (patch) | |
tree | 79f42dc30a6d2254e53d5c1af90292df15f3349d /lib/str.c | |
parent | 5980d0d9a23b552703507625ba6437bca7f45005 (diff) | |
download | gnutls-54e161b9dabe4bd3b08b532475294a37c7562b45.tar.gz |
gnutls_buffer_append_data: remove duplicated code
The function shared the same logic as in _gnutls_buffer_resize.
Signed-off-by: Daiki Ueno <ueno@gnu.org>
Diffstat (limited to 'lib/str.c')
-rw-r--r-- | lib/str.c | 24 |
1 files changed, 4 insertions, 20 deletions
@@ -113,7 +113,7 @@ gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, size_t data_size) { size_t const tot_len = data_size + dest->length; - size_t const unused = MEMSUB(dest->data, dest->allocd); + int ret; if (unlikely(dest->data != NULL && dest->allocd == NULL)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -126,25 +126,9 @@ gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - if (dest->max_length >= tot_len) { - - if (dest->max_length - unused <= tot_len) { - align_allocd_with_data(dest); - } - } else { - size_t const new_len = - MAX(data_size, MIN_CHUNK) + MAX(dest->max_length, - MIN_CHUNK); - - dest->allocd = gnutls_realloc_fast(dest->allocd, new_len); - if (dest->allocd == NULL) { - gnutls_assert(); - return GNUTLS_E_MEMORY_ERROR; - } - dest->max_length = new_len; - dest->data = dest->allocd + unused; - - align_allocd_with_data(dest); + ret = _gnutls_buffer_resize(dest, tot_len); + if (ret < 0) { + return ret; } assert(dest->data != NULL); |