=================================================================== RCS file: /cvs/mandoc/roff.c,v retrieving revision 1.361 retrieving revision 1.362 diff -u -p -r1.361 -r1.362 --- mandoc/roff.c 2019/01/05 09:10:32 1.361 +++ mandoc/roff.c 2019/02/06 17:40:13 1.362 @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.361 2019/01/05 09:10:32 schwarze Exp $ */ +/* $Id: roff.c,v 1.362 2019/02/06 17:40:13 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015, 2017-2019 Ingo Schwarze @@ -3865,6 +3865,10 @@ roff_renamed(ROFF_ARGS) return ROFF_CONT; } +/* + * Measure the length in bytes of the roff identifier at *cpp + * and advance the pointer to the next word. + */ static size_t roff_getname(struct roff *r, char **cpp, int ln, int pos) { @@ -3872,22 +3876,20 @@ roff_getname(struct roff *r, char **cpp, int ln, int p size_t namesz; name = *cpp; - if ('\0' == *name) + if (*name == '\0') return 0; - /* Read until end of name and terminate it with NUL. */ + /* Advance cp to the byte after the end of the name. */ + for (cp = name; 1; cp++) { - if ('\0' == *cp || ' ' == *cp) { - namesz = cp - name; + namesz = cp - name; + if (*cp == '\0' || *cp == ' ') break; - } - if ('\\' != *cp) + if (*cp != '\\') continue; - namesz = cp - name; - if ('{' == cp[1] || '}' == cp[1]) + if (cp[1] == '{' || cp[1] == '}') break; - cp++; - if ('\\' == *cp) + if (*++cp == '\\') continue; mandoc_msg(MANDOCERR_NAMESC, ln, pos, "%.*s", (int)(cp - name + 1), name); @@ -3896,7 +3898,8 @@ roff_getname(struct roff *r, char **cpp, int ln, int p } /* Read past spaces. */ - while (' ' == *cp) + + while (*cp == ' ') cp++; *cpp = cp;