From 20bd05bc1165d2c8e7af3c9a8ec1282785f9bc0f Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 1 May 2015 16:02:47 +0000 Subject: Setting the "last" member of struct roff_node was done at an extremely weird place. Move it to the obviously correct place. Surprisingly, this didn't cause any misformatting in the test suite or in any base system manuals, but i cannot believe the code was really correct for all conceivable input, and it would be very hard to verify. At the very least, it cannot have worked for man(7). --- mdoc_macro.c | 6 ++---- roff.c | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mdoc_macro.c b/mdoc_macro.c index 236e63e9..d87da2cf 100644 --- a/mdoc_macro.c +++ b/mdoc_macro.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_macro.c,v 1.198 2015/05/01 15:27:54 schwarze Exp $ */ +/* $Id: mdoc_macro.c,v 1.199 2015/05/01 16:02:47 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010, 2012-2015 Ingo Schwarze @@ -258,7 +258,7 @@ lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) static void rew_last(struct roff_man *mdoc, const struct roff_node *to) { - struct roff_node *n, *np; + struct roff_node *np; if (to->flags & MDOC_VALID) return; @@ -273,10 +273,8 @@ rew_last(struct roff_man *mdoc, const struct roff_node *to) */ np = mdoc->last->parent; mdoc_valid_post(mdoc); - n = mdoc->last; mdoc->last = np; assert(mdoc->last); - mdoc->last->last = n; } mdoc_valid_post(mdoc); } diff --git a/roff.c b/roff.c index 94bcfa0e..31bed07a 100644 --- a/roff.c +++ b/roff.c @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.269 2015/04/23 16:17:44 schwarze Exp $ */ +/* $Id: roff.c,v 1.270 2015/05/01 16:02:47 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze @@ -1022,6 +1022,7 @@ roff_node_append(struct roff_man *man, struct roff_node *n) /* NOTREACHED */ } n->parent->nchild++; + n->parent->last = n; /* * Copy over the normalised-data pointer of our parent. Not -- cgit v1.2.3-56-ge451