=================================================================== RCS file: /cvs/mandoc/roff.c,v retrieving revision 1.285 retrieving revision 1.287 diff -u -p -r1.285 -r1.287 --- mandoc/roff.c 2017/01/10 13:47:00 1.285 +++ mandoc/roff.c 2017/01/10 21:59:47 1.287 @@ -1,7 +1,7 @@ -/* $Id: roff.c,v 1.285 2017/01/10 13:47:00 schwarze Exp $ */ +/* $Id: roff.c,v 1.287 2017/01/10 21:59:47 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons - * Copyright (c) 2010-2015 Ingo Schwarze + * Copyright (c) 2010-2015, 2017 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -1017,9 +1017,13 @@ roff_node_append(struct roff_man *man, struct roff_nod n->parent = man->last->parent; break; case ROFF_NEXT_CHILD: + if (man->last->child != NULL) { + n->next = man->last->child; + man->last->child->prev = n; + } else + man->last->last = n; man->last->child = n; n->parent = man->last; - n->parent->last = n; break; default: abort(); @@ -1059,10 +1063,7 @@ roff_word_alloc(struct roff_man *man, int line, int po n = roff_node_alloc(man, line, pos, ROFFT_TEXT, TOKEN_NONE); n->string = roff_strdup(man->roff, word); roff_node_append(man, n); - if (man->macroset == MACROSET_MDOC) - n->flags |= NODE_VALID | NODE_ENDED; - else - n->flags |= NODE_VALID; + n->flags |= NODE_VALID | NODE_ENDED; man->next = ROFF_NEXT_SIBLING; } @@ -1147,10 +1148,7 @@ roff_addtbl(struct roff_man *man, const struct tbl_spa n = roff_node_alloc(man, tbl->line, 0, ROFFT_TBL, TOKEN_NONE); n->span = tbl; roff_node_append(man, n); - if (man->macroset == MACROSET_MDOC) - n->flags |= NODE_VALID | NODE_ENDED; - else - n->flags |= NODE_VALID; + n->flags |= NODE_VALID | NODE_ENDED; man->next = ROFF_NEXT_SIBLING; }