=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.207 retrieving revision 1.209 diff -u -p -r1.207 -r1.209 --- mandoc/mdoc_validate.c 2014/03/30 23:28:06 1.207 +++ mandoc/mdoc_validate.c 2014/04/15 00:41:09 1.209 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.207 2014/03/30 23:28:06 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.209 2014/04/15 00:41:09 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -332,6 +332,7 @@ static const char * const secnames[SEC__MAX] = { "LIBRARY", "SYNOPSIS", "DESCRIPTION", + "CONTEXT", "IMPLEMENTATION NOTES", "RETURN VALUES", "ENVIRONMENT", @@ -1949,7 +1950,7 @@ static int post_sh_head(POST_ARGS) { struct mdoc_node *n; - const char *secname; + char *secname; enum mdoc_sec sec; /* @@ -1961,15 +1962,8 @@ post_sh_head(POST_ARGS) secname = NULL; sec = SEC_CUSTOM; - n = mdoc->last; - if (n->child) { - assert(1 == n->nchild); - n = n->child; - assert(NULL != n); - assert(MDOC_TEXT == n->type); - secname = n->string; - sec = a2sec(secname); - } + mdoc_deroff(&secname, mdoc->last); + sec = NULL == secname ? SEC_CUSTOM : a2sec(secname); /* The NAME should be first. */ @@ -2006,8 +2000,10 @@ post_sh_head(POST_ARGS) /* We don't care about custom sections after this. */ - if (SEC_CUSTOM == sec) + if (SEC_CUSTOM == sec) { + free(secname); return(1); + } /* * Check whether our non-custom section is being repeated or is @@ -2040,6 +2036,8 @@ post_sh_head(POST_ARGS) break; if (*mdoc->meta.msec == '3') break; + /* FALLTHROUGH */ + case (SEC_CONTEXT): if (*mdoc->meta.msec == '9') break; mandoc_msg(MANDOCERR_SECMSEC, mdoc->parse, @@ -2049,6 +2047,7 @@ post_sh_head(POST_ARGS) break; } + free(secname); return(1); }