On Tue, Jun 14, 2011 at 11:56:27PM +0200, sven falempin wrote:

> Hello,
> 
> Indeed there is a small problem:
> 
> # echo 'abbbbbbbbbbbbbfffff' | sed -E 's/[a$]/x/g'
> xbbbbbbbbbbbbbfffff

That is expected. $ is only special when it ocurs as the list char of
a re.

> # echo 'abbbbbbbbbbbbbfffff' | sed -E 's/a|$/x/g'
> x

This is likely to be a real bug.

> 
> String modification is done inside the 'case 0:'
> substitute(struct s_command *cp) in src/usr.bin/process.c
> 
> But the problem may comme from regexec_e.
> 
> Maybe openbsd devs should test another regexp code version ?

Why? If we should change libs on every bug encountered, nothing will
be left. 

Anyway, thanks for the report.

        -Otto

> 
> Hope it helps,
> Who still use sed anyway :)
> 
> Regards.
> 
> 2011/6/12 Ingo Schwarze <[email protected]>
> 
> > Hi Nils,
> >
> > Nils Anspach wrote on Sun, Jun 12, 2011 at 12:49:42PM +0200:
> >
> > > I have an issue with sed. Why does
> > >
> > >       echo 'ab' | sed -E 's/a|$/x/g'
> > >
> > > give 'x' whereas
> >
> > I sense a bug here.
> > Tracing a bit around process(),
> > it looks like the first application of the s command
> > yields dst = "x" continue_to_process = "b\n",
> > and then the second application
> > appends "\n" to dst (should rather append "b", i think).
> > Maybe something is wrong here with character/pointer counting,
> > but i'm somewhat out of time now for tracing.
> >
> > This is worth more investigation.
> >
> > Yours,
> >   Ingo
> >
> >
> 
> 
> -- 
> ---------------------------------------------------------------------------------------------------------------------
> () ascii ribbon campaign - against html e-mail
> /\

Reply via email to