=================================================================== RCS file: /cvs/mandoc/man.c,v retrieving revision 1.188 retrieving revision 1.189 diff -u -p -r1.188 -r1.189 --- mandoc/man.c 2022/04/28 10:26:37 1.188 +++ mandoc/man.c 2022/08/16 23:01:09 1.189 @@ -1,4 +1,4 @@ -/* $Id: man.c,v 1.188 2022/04/28 10:26:37 schwarze Exp $ */ +/* $Id: man.c,v 1.189 2022/08/16 23:01:09 schwarze Exp $ */ /* * Copyright (c) 2013-2015,2017-2019,2022 Ingo Schwarze * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons @@ -76,23 +76,22 @@ man_hasc(char *start) void man_descope(struct roff_man *man, int line, int offs, char *start) { - /* Trailing \c keeps next-line scope open. */ + /* First close out all next-line element scopes, if any. */ - if (start != NULL && man_hasc(start) != NULL) - return; - - /* - * Co-ordinate what happens with having a next-line scope open: - * first close out the element scopes (if applicable), - * then close out the block scope (also if applicable). - */ - if (man->flags & MAN_ELINE) { while (man->last->parent->type != ROFFT_ROOT && man_macro(man->last->parent->tok)->flags & MAN_ESCOPED) man_unscope(man, man->last->parent); man->flags &= ~MAN_ELINE; } + + /* Trailing \c keeps next-line block scope open. */ + + if (start != NULL && man_hasc(start) != NULL) + return; + + /* Close out the next-line block scope, if there is one. */ + if ( ! (man->flags & MAN_BLINE)) return; man_unscope(man, man->last->parent);