{
char *buffer = filebuf.buffer;
regexp *rp;
- char *name;
+ char *name = NULL;
for (rp = p_head; rp != NULL; rp = rp->p_next)
{
while (charno < rp->regs.end[0])
if (buffer[charno++] == '\n')
lineno++, linecharno = charno;
- name = rp->name;
- if (name[0] == '\0')
+ if (! rp->name || rp->name[0] == '\0')
name = NULL;
else /* make a named tag */
name = substitute (buffer, rp->name, &rp->regs);
if (rp->force_explicit_name)
- /* Force explicit tag name, if a name is there. */
+ /* Force explicit tag name, if a name
+ is there. */
pfnote (name, TRUE, buffer + linecharno,
- charno - linecharno + 1, lineno, linecharno);
- else
- make_tag (name, strlen (name), TRUE, buffer + linecharno,
- charno - linecharno + 1, lineno, linecharno);
+ charno - linecharno + 1, lineno,
+ linecharno);
+ else if(name == NULL)
+ abort();
+ else
+ make_tag (name, strlen (name), TRUE,
+ buffer + linecharno,
+ charno - linecharno + 1,
+ lineno, linecharno);
+ free(name);
+ name = NULL;
break;
}
}