version 1.62, 2011/01/04 22:28:17 |
version 1.63, 2011/01/16 19:27:25 |
|
|
static int |
static int |
rew_last(struct mdoc *mdoc, const struct mdoc_node *to) |
rew_last(struct mdoc *mdoc, const struct mdoc_node *to) |
{ |
{ |
struct mdoc_node *n; |
struct mdoc_node *n, *np; |
|
|
assert(to); |
assert(to); |
mdoc->next = MDOC_NEXT_SIBLING; |
mdoc->next = MDOC_NEXT_SIBLING; |
|
|
/* LINTED */ |
/* LINTED */ |
while (mdoc->last != to) { |
while (mdoc->last != to) { |
|
/* |
|
* Save the parent here, because we may delete the |
|
* m->last node in the post-validation phase and reset |
|
* it to m->last->parent, causing a step in the closing |
|
* out to be lost. |
|
*/ |
|
np = mdoc->last->parent; |
if ( ! mdoc_valid_post(mdoc)) |
if ( ! mdoc_valid_post(mdoc)) |
return(0); |
return(0); |
n = mdoc->last; |
n = mdoc->last; |
mdoc->last = mdoc->last->parent; |
mdoc->last = np; |
assert(mdoc->last); |
assert(mdoc->last); |
mdoc->last->last = n; |
mdoc->last->last = n; |
} |
} |