=================================================================== RCS file: /cvs/texi2mdoc/util.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- texi2mdoc/util.c 2015/02/23 15:09:09 1.10 +++ texi2mdoc/util.c 2015/02/23 17:24:51 1.11 @@ -1,4 +1,4 @@ -/* $Id: util.c,v 1.10 2015/02/23 15:09:09 kristaps Exp $ */ +/* $Id: util.c,v 1.11 2015/02/23 17:24:51 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -421,10 +421,11 @@ static void texiexecmacro(struct texi *p, struct teximacro *m, const char *buf, size_t sz, size_t *pos) { - size_t valsz, realsz, aasz, asz, - ssz, i, j, k, start, end; - char *val; - char **args; + size_t valsz, realsz, aasz, asz, + ssz, i, j, k, start, end; + char *val; + char **args; + const char *cp; args = argparse(p, buf, sz, pos, &asz, m->argsz); if (asz != m->argsz) @@ -494,7 +495,10 @@ texiexecmacro(struct texi *p, struct teximacro *m, texiabort(p, NULL); } - j = strlcat(val, args[k], valsz + 1); + for (cp = args[k]; '\0' != *cp; cp++) + val[j++] = *cp; + + val[j] = '\0'; i = end; } @@ -1221,8 +1225,6 @@ argparse(struct texi *p, const char *buf, /* Test for zero-length '{ }'. */ if (start == end && '}' == buf[*pos] && 0 == *argsz) break; - if (start == end) - texierr(p, "zero-length argument"); /* FIXME: use reallocarray. */ args = realloc (args, sizeof(char *) *