On Fri, May 06, 2016 at 10:46:12PM +0800, Marcel Böhme wrote:
>    d_print_init (&dpi, callback, opaque, dc);
>  
> -  {
> -#ifdef CP_DYNAMIC_ARRAYS
> -    __extension__ struct d_saved_scope scopes[dpi.num_saved_scopes];
> -    __extension__ struct d_print_template temps[dpi.num_copy_templates];
> +  dpi.copy_templates
> +    = (struct d_print_template *) malloc (((size_t) dpi.num_copy_templates) 
> +                                       * sizeof (*dpi.copy_templates));
> +  dpi.saved_scopes
> +    = (struct d_saved_scope *) malloc (((size_t) dpi.num_saved_scopes) 
> +                                    * sizeof (*dpi.saved_scopes));
> +  
> +  if (! dpi.copy_templates || ! dpi.saved_scopes)
> +    {
> +      d_print_error (&dpi);
> +      return 0;
> +    }

If one malloc succeeds and the other fails, you leak memory.

        Jakub

Reply via email to