Up to [cvsweb.bsd.lv] / mandoc / regress / roff / de
Request diff between arbitrary revisions
Default branch: MAIN
Current tag: MAIN
Revision 1.4 / (download) - annotate - [select for diffs], Thu Aug 23 14:29:41 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6,
VERSION_1_14_5,
HEAD
Changes since 1.3: +2 -2 lines
Diff to previous 1.3 (colored)
Implement the roff(7) .shift and .return requests, for example used by groff_hdtbl(7) and groff_mom(7). Also correctly interpolate arguments during nested macro execution even after .shift and .return, implemented using a stack of argument arrays. Note that only read.c, but not roff.c can detect the end of a macro execution, and the existence of .shift implies that arguments cannot be interpolated up front, so unfortunately, this includes a partial revert of roff.c rev. 1.337, moving argument interpolation back into the function roff_res().
Revision 1.3 / (download) - annotate - [select for diffs], Tue Jul 4 15:26:32 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_4,
VERSION_1_14_3,
VERSION_1_14_2
Changes since 1.2: +1 -1 lines
Diff to previous 1.2 (colored)
Messages of the -Wbase level now print STYLE:. Since this causes horrible churn anyway, profit of the opportunity to stop excessive testing, such that this is hopefully the last instance of such churn. Consistently use OpenBSD RCS tags, blank .Os, blank fourth .TH argument, and Mdocdate like everywhere else. Use -Ios=OpenBSD for platform-independent predictable output.
Revision 1.2 / (download) - annotate - [select for diffs], Wed Mar 8 13:18:12 2017 UTC (7 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.1: +1 -1 lines
Diff to previous 1.1 (colored)
prevent infinite recursion while expanding the arguments of a user-defined macro; issue found by tb@ with afl(1)
Revision 1.1 / (download) - annotate - [select for diffs], Tue Mar 7 20:00:09 2017 UTC (7 years, 6 months ago) by schwarze
Branch: MAIN
If a user-defined macro is aborted because it exceeds the stack limit, usually due to infinite recursion, discard whatever remains in all those open stack levels. Otherwise, insane constructions like the following could generate macros of enormous size, causing mandoc(1) to die from memory exhaustion: .de m \" original macro definition .m \" recursion to blow up the stack .de m \" definition to be run during the call of .m marked (*) very long plain text (some kilobytes) .m \" expand the above a thousand times while unwinding the stack .. \" end of the original definition .m \" (*) recursively generate a ridiculously large macro .. \" end of recursively generated definition .m \" execute the giant macro, exhausting memory Very creative abuse found by tb@ with afl(1).