Follow-up Comment #11, bug #42675 (group groff): The output of Carsten's example in http://lists.gnu.org/r/groff/2014-07/msg00024.html tells us is that sections 1 and 3 call .A with no parameters; section 2 effectively calls it with one parameter, which is "\}". Thus, the "\}" in section 2 of the code, being interpreted as a parameter to .A, should _not_ be used for flow control. So the second .if branch is never terminated.
This is testable by changing the ".if 1" in section 2 to ".if 0". Then the entirety of section 3--still inside an unclosed open brace--should be skipped, as it's all inside the branch associated with ".if 0". But this is not what happens. Section 2 is indeed skipped, but section 3 runs as normal. So the \} in section 2 is acting both as a literal parameter to macro .A _and_ as flow control. To me, this seems like the bug. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?42675> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/