On 10/02/14 05:24, Florian Pritz wrote:
> Signed-off-by: Florian Pritz <[email protected]>
> ---
>  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 */
> 


Reply via email to