[pacman-dev] [PATCH v5 6/6] be_local: Use alpm_greedy_grow
Allan McRae
allan at archlinux.org
Mon Feb 10 01:01:33 EST 2014
On 10/02/14 05:24, Florian Pritz wrote:
> Signed-off-by: Florian Pritz <bluewind at xinu.at>
> ---
> lib/libalpm/be_local.c | 18 ++----------------
> 1 file changed, 2 insertions(+), 16 deletions(-)
>
> diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
> index 0b5b266..d2b0fe3 100644
> --- a/lib/libalpm/be_local.c
> +++ b/lib/libalpm/be_local.c
> @@ -736,22 +736,8 @@ static int local_db_read(alpm_pkg_t *info, alpm_dbinfrq_t inforeq)
>
> while(fgets(line, sizeof(line), fp) &&
> (len = _alpm_strip_newline(line, 0))) {
> - if(files_count >= files_size) {
> - size_t old_size = files_size;
> - if(files_size == 0) {
> - files_size = 8;
> - } else {
> - files_size *= 2;
> - }
> - files = realloc(files, sizeof(alpm_file_t) * files_size);
> - if(!files) {
> - _alpm_alloc_fail(sizeof(alpm_file_t) * files_size);
> - goto error;
> - }
> - /* ensure all new memory is zeroed out, in both the initial
> - * allocation and later reallocs */
> - memset(files + old_size, 0,
> - sizeof(alpm_file_t) * (files_size - old_size));
> + if(!_alpm_greedy_grow((void **)&files, &files_size, (files_count + 1) * sizeof(alpm_file_t))) {
This starts the size at 1 then doubles rather than starting at 8 like
previously. This does the old way:
_alpm_greedy_grow((void **)&files, &files_size,
(files_size ? files_size + 1 : 8 * sizeof(alpm_file_t)))
> + goto error;
> }
> /* since we know the length of the file string already,
> * we can do malloc + memcpy rather than strdup */
>
More information about the pacman-dev
mailing list