Bernd Edlinger <[email protected]> writes:
> Hi,
>
> this fixes a few -Wshadow=local warnings in hash-table.h.
>
> Since values of type size_t are assigned here to int variables
> an overflow may happen resulting in memory leaks or malfunction.
>
>
> Bootstrapped and reg-tested on x86_64-pc-linux-gnu.
> Is it OK for trunk?
>
>
> Thanks
> Bernd.
>
> 2019-10-03 Bernd Edlinger <[email protected]>
>
> * hash-table.h (hash_table::empty_slow): Don't assign
> size_t values to int variables.
OK, thanks.
Richard
> Index: gcc/hash-table.h
> ===================================================================
> --- gcc/hash-table.h (revision 276484)
> +++ gcc/hash-table.h (working copy)
> @@ -842,9 +842,8 @@ hash_table<Descriptor, Lazy, Allocator>::empty_slo
> size_t size = m_size;
> size_t nsize = size;
> value_type *entries = m_entries;
> - int i;
>
> - for (i = size - 1; i >= 0; i--)
> + for (size_t i = size - 1; i < size; i--)
> if (!is_empty (entries[i]) && !is_deleted (entries[i]))
> Descriptor::remove (entries[i]);
>
> @@ -856,9 +855,10 @@ hash_table<Descriptor, Lazy, Allocator>::empty_slo
>
> if (nsize != size)
> {
> - int nindex = hash_table_higher_prime_index (nsize);
> - int nsize = prime_tab[nindex].prime;
> + unsigned int nindex = hash_table_higher_prime_index (nsize);
>
> + nsize = prime_tab[nindex].prime;
> +
> if (!m_ggc)
> Allocator <value_type> ::data_free (m_entries);
> else