diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2011-09-20 13:13:22 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2011-09-20 13:13:22 +0000 |
commit | 3c2abe2b89984efb0fc55047df1567856ec979d7 (patch) | |
tree | 9d1bfc8f00d745cb9f238c9ac304d85001248929 /usr.bin | |
parent | 3680b827c7c70802914e02547121b6499cd16900 (diff) |
When advancing the left margin, .RS also needs to reset the right margin
to the default and check that the left does not outgrow the right one.
Otherwise, the (rmargin >= offset) assertion fails in term_flushln().
Bug found and fix tested by kristaps@ with NetBSD slapo-retcode(5).
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/mandoc/man_term.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c index 1e63899fa17..b9e0113521b 100644 --- a/usr.bin/mandoc/man_term.c +++ b/usr.bin/mandoc/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.73 2011/09/20 09:02:18 schwarze Exp $ */ +/* $Id: man_term.c,v 1.74 2011/09/20 13:13:21 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> @@ -822,7 +822,8 @@ pre_RS(DECL_ARGS) sz = (size_t)ival; mt->offset += sz; - p->offset = mt->offset; + p->rmargin = p->maxrmargin; + p->offset = mt->offset < p->rmargin ? mt->offset : p->rmargin; if (++mt->lmarginsz < MAXMARGINS) mt->lmargincur = mt->lmarginsz; |