On Mon, May 19, 2025, 1:27 PM Eric Blake <[email protected]> wrote:
> On Mon, May 19, 2025 at 10:46:10AM -0500, Eric Blake wrote: > > On Fri, May 16, 2025 at 08:16:24AM -0500, Eric Blake wrote: > > > Since you continue to patch things as fast as I report them (now > > > testing with commit a4cc0f3c): > > > > Now testing with b686ed, you have a problem with redefining a macro as > > empty if it has been undefined in the meantime: > > > > $ echo 'changequote([,])define(a)undefine([a])define(a)' | m4p > > Traceback (most recent call last): > > File "/home/eblake/m4p/.venv/bin/m4p", line 8, in <module> > > sys.exit(main()) > > ~~~~^^ > > ... > > File "/home/eblake/m4p/m4p/parser.py", line 279, in add_define > > self.macros[ident][-1] = defn > > ~~~~~~~~~~~~~~~~~~^^^^ > > IndexError: list assignment index out of range > > This appears to fix it for me: > > diff --git i/m4p/parser.py w/m4p/parser.py > index 4793c8a..83c69df 100644 > --- i/m4p/parser.py > +++ w/m4p/parser.py > @@ -272,7 +272,7 @@ class Parser: > > def add_define(self, ident: bytes, defn: bytes | Builtin): > """Equivalent to m4_define(ident, defn).""" > - if self.macros.get(ident) is None: > + if not self.macros.get(ident, []): > self.macros[ident] = [defn] > else: > # GNU ext define: replace top. Others: replace all with 1. > That looks good, I hoped something of the sort would have fixed it. I can commit it when I'm back home. Regards, Nikolaos Chatzikonstantinou >
