On Thu, Apr 04, 2019 at 12:49:41PM +0100, Ben Dooks wrote: > On 03/04/2019 23:15, Luc Van Oostenryck wrote: > > On Wed, Apr 03, 2019 at 04:35:52PM +0100, Ben Dooks wrote: > > > From: Ben Dooks <ben-linux@xxxxxxxxx> > > > > > > The original update to evaluate.c did the va-arg checking > > > before the standard checks. This is due to degernate() > > > removing expr->string so save the string before the loop > > > and then use it afterwards. > > > > > > -> to push back into evaluate.c if no other options available. > > > > I think this patch is by far the best thing to do. Even > > without this ordering problem, get_printf_fmt() is a good thing. > > I just think it would be better to keep the whole sym->initializer > > (so you will have an EXPR_STRING with its 'wide' indicator). > > the trouble is, once degenerate() has dealt with the expression for > the format string in the standard argument checks, the string has > gone (the expr is modified, and the string is nulled out). > > I tried the following, but got segfaults. OK. That's unexpected (the array expression should be modified but not its initializer). I'll investigate the cause. -- Luc