From cd00e12d31dd9de465a0d5f2677fa71bc2b12d80 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 29 Jun 2017 09:34:45 +0200 Subject: [PATCH] _i18n_number_rewrite: Use struct scratch_buffer --- ChangeLog | 5 +++++ stdio-common/_i18n_number.h | 23 +++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index db0c4ad37e..67c5d07722 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-06-29 Florian Weimer + + * stdio-common/_i18n_number.h (_i18n_number_rewrite): Use struct + scratch_buffer. + 2017-06-29 Florian Weimer * stdio-common/vfprintf.c (WORK_BUFFER_SIZE): Reduce size for diff --git a/stdio-common/_i18n_number.h b/stdio-common/_i18n_number.h index 080e8141b9..13d59365ff 100644 --- a/stdio-common/_i18n_number.h +++ b/stdio-common/_i18n_number.h @@ -19,6 +19,7 @@ #include #include #include +#include #include "../locale/outdigits.h" #include "../locale/outdigitswc.h" @@ -65,17 +66,13 @@ _i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end) /* Copy existing string so that nothing gets overwritten. */ CHAR_T *src; - bool use_alloca = __libc_use_alloca ((rear_ptr - w) * sizeof (CHAR_T)); - if (__builtin_expect (use_alloca, true)) - src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T)); - else - { - src = (CHAR_T *) malloc ((rear_ptr - w) * sizeof (CHAR_T)); - if (src == NULL) - /* If we cannot allocate the memory don't rewrite the string. - It is better than nothing. */ - return w; - } + struct scratch_buffer buffer; + scratch_buffer_init (&buffer); + if (!scratch_buffer_set_array_size (&buffer, rear_ptr - w, sizeof (CHAR_T))) + /* If we cannot allocate the memory don't rewrite the string. + It is better than nothing. */ + return w; + src = buffer.data; CHAR_T *s = (CHAR_T *) __mempcpy (src, w, (rear_ptr - w) * sizeof (CHAR_T)); @@ -110,8 +107,6 @@ _i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end) } } - if (! use_alloca) - free (src); - + scratch_buffer_free (&buffer); return w; }