[PATCH 1/6] Remove some manual memory management from compile interface

Simon Marchi simark@simark.ca
Sun Aug 9 22:34:05 GMT 2020


> diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c
> index 02df7ab90e6..00eaaf3fa68 100644
> --- a/gdb/compile/compile-cplus-types.c
> +++ b/gdb/compile/compile-cplus-types.c
> @@ -848,33 +848,33 @@ compile_cplus_convert_struct_or_union (compile_cplus_instance *instance,
>    gcc_type result;
>    if (type->code () == TYPE_CODE_STRUCT)
>      {
> -      struct gcc_vbase_array bases;
>        int num_baseclasses = TYPE_N_BASECLASSES (type);
> +      std::vector<gcc_type> elements (num_baseclasses);
> +      std::vector<enum gcc_cp_symbol_kind> flags (num_baseclasses);
>  
> -      memset (&bases, 0, sizeof (bases));
> +      struct gcc_vbase_array bases {};
> +      bases.elements = elements.data ();
>  
>        if (num_baseclasses > 0)

You could now remove this `if (num_baseclasses > 0)`, there's no reason for it anymore I think.

Otherwise, LGTM.

Simon


More information about the Gdb-patches mailing list