bug-groff
[Top][All Lists]
Advanced

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

[bug #61100] [troff] do_request(): assertion failed: 'do_old_compatible_


From: G. Branden Robinson
Subject: [bug #61100] [troff] do_request(): assertion failed: 'do_old_compatible_flag == -1'
Date: Thu, 2 Sep 2021 10:56:43 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

Follow-up Comment #4, bug #61100 (project groff):

[comment #2 comment #2:]
> [comment #1 comment #1:]
> > In ".do while ...", the "do" is valid for the whole loop.
> 
> Is this documented?  I don't find mention of it in the Texinfo manual.

Some language I just pushed, but had been working on since before I blundered
into this bug, may provide part of the explanation.


@code{de} defines a macro that inherits the compatibility mode
enablement status of its context (@pxref{Implementation Differences}).
Often it is desirable to make a macro that uses @code{groff} features
callable from contexts where compatibility mode is on; for instance,
when writing extensions to a historical macro package.  To achieve this,
compatibility mode needs to be switched off while such a macro is
interpreted---without disturbing that state when it is finished.


Combine this with some older existing text...


The body of a @code{while} request is treated like the body of a
@code{de} request: GNU @code{troff} temporarily stores it in a macro
that is deleted after the loop exits.  It can considerably slow down a
macro if the body of the @code{while} request (within the macro) is
large.  Each time the macro is executed, the @code{while} body is parsed
and stored again as a temporary macro.


...and I think the consequence is implied.

I'll try a few different scenarios and see if just ditching the assertion is
warranted; it might well be.



    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?61100>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

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