Re: [PATCH] Re: libtool-2.4.2 is fine but libtool-2.4.6 very slow.

Pavel Raiskup <[email protected]>
Newsgroups gmane.comp.gnu.libtool.patches,gmane.comp.gnu.libtool.general
Message-ID <[email protected]>
On Wednesday 23 of September 2015 16:09:49 Eric Blake wrote:
> On 09/23/2015 03:37 PM, Pavel Raiskup wrote:
> 
> > 
> >>From 5e8a4c5173f1aa0786e8eba15fb07bfe04b83862 Mon Sep 17 00:00:00 2001
> > From: Pavel Raiskup <[email protected]>
> > Date: Fri, 18 Sep 2015 23:17:07 +0200
> > Subject: [PATCH] libtoolize: fix infinite recursion in m4
> > 
> > Some projects use this construct in configure.ac:
> > 
> >   m4_define([version], m4_include([version])
> 
> Missing a )
> 
> The faulty package used:
> 
> m4_define([version], m4_include(version))

Thanks for catching the ')' typo!

> and the infinite recursion occurred _because_ the usage was underquoted.
> But as you wrote things here, you have sufficient quoting that you
> won't trigger infinite recursion.
> You need to drop the second [] for
> this to be an accurate representation of the failure.

I intentionally added the '[ ]' quotes there as that is something which
would look like correct usage, but it still goes to infinite recursion.

The problem is that while defining 'version':

  m4_define([version], m4_include([version]))

The expansion is like 'version => m4_include(version)'.  Then, usage of
'version' goes to infinite recursion.

> >   pkg_version=version
> > 
> > When the m4_include builtin is undefined (as was done in
> > libtoolize and extract-trace scripts), the call to this 'version'
> > macro gone to infinite recursion (until ENOMEM).  So rather
> 
> s/gone to infinite/enters an infinite/
> 
> > re-define all potentially dangerous macros by empty strings,
> > suggested by Eric Blake.
> > 
> > While we are on it, merge the macro-"blacklist" with similar list
> > implemented in gettext, except the 'm4_esyscmd'.  It's kept
> 
> s/except the/except for/
> 
> > defined because we already trace AC_INIT macro for package
> > version, while it is often specified by
> > m4_esyscmd(git-version-gen).  Similarly to m4_include, m4_esyscmd
> > might be opt-in-blacklisted in future.
> > 
> > References:
> > http://lists.gnu.org/archive/html/libtool/2015-09/msg00000.html
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764580
> > 
> 
> With the commit message touched up, it looks okay to me.

I'll fix the typos, thanks!

Pavel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.