groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] poll: which macro packages are in common use / and why.


From: Werner LEMBERG
Subject: Re: [Groff] poll: which macro packages are in common use / and why.
Date: Mon, 27 Sep 2004 08:01:36 +0200 (CEST)

> The actual message displayed was indeed 'input stack limit
> exceeded'.  

Ha!  You are wrong.  The message is

  pdfmark.ms:139: fatal error:
    input stack limit exceeded (probable infinite loop)

as I have suspected, and it happens because the number of arguments
passed to `pdf*pop' (in the second call) is larger than 1000 or so (in
the variable `pdf:href.map.internal').  The message is misleading for
the normal user, but internally macro arguments are indeed pushed onto
a stack (function `interpolate_arg' in input.cpp).

> This error is actually trapped much earlier in the document, at line
> 139, immediately after the definition of the .pdfmark-manual macro,
> suggesting that there may simply have been insufficient heap space
> available to accommodate any new input objects after this point.

Before your test file I wasn't aware that the number of arguments is
limited at all (or rather, I haven't drawn this conclusion).  To be
more precise, it is a problem with \$* and \$@ which push its
arguments on the input stack element by element.

BTW, it was quite easy to find the problem with saying

  GROFF_FLAGS=-mtrace ./pdfmake pdfmark &> pdfmark.log

Anyway, I've fixed troff in the CVS so that your code works as
expected: \$* and \$@ now build a string first which is then pushed
onto the stack.  Please test.


    Werner




reply via email to

[Prev in Thread] Current Thread [Next in Thread]