URL: <https://savannah.gnu.org/bugs/?61100>
Summary: [troff] do_request(): assertion failed: 'do_old_compatible_flag == -1' Project: GNU troff Submitted by: gbranden Submitted on: Wed 01 Sep 2021 08:59:57 AM UTC Category: Core Severity: 4 - Important Item Group: Crash/Not responding Status: In Progress Privacy: Public Assigned to: gbranden Open/Closed: Open Discussion Lock: Any Planned Release: None _______________________________________________________ Details: Well, in attempting to "quickly" move a documentation item off my plate to look into John Garnder's assertion failure report in bug #61089, I wrote a little experiment to check my understanding of an issue and provoked an entirely new assertion failure. Good times, good times. $ ./build/groff -Tutf8 -ww EXPERIMENTS/compatibility_mode_de.groff | cat -s troff: ../src/roff/troff/input.cpp:2651: do_request(): assertion failed: 'do_old_compatible_flag == -1' /home/branden/src/GIT/groff/build/groff: error: troff: Aborted (core dumped) Input: $ cat EXPERIMENTS/compatibility_mode_de.groff .cp 1 .de xx .do length a \\$1 .nr c 0 .do while \\nc<=\\na \{\ . do ds s \\$1 . do substring s 0 \\nc . do nop \\*s .\} \\$1 Saint-\['E]tienne (\\na) .. .cp 0 .xx Caf\['e] The assertion is one I added when implementing the new \n[.cp] feature last year. It _might_ be that I simply didn't anticipate this use case last year and that I can remove the assertion without causing any harm. Wouldn't that be nice? I don't think I anticipated use of "do" within "de" within "cp 1", but in trying to check my understanding of when special character escape sequences get transformed into nodes, I blundered directly into my own land mine. I have some thinking to do. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?61100> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/