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