version 1.245, 2014/12/25 17:23:32 |
version 1.247, 2015/01/01 19:28:49 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011, 2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 651 roff_res(struct roff *r, struct buf *buf, int ln, int |
|
Line 651 roff_res(struct roff *r, struct buf *buf, int ln, int |
|
r->parse, ln, (int)(stesc - buf->buf), |
r->parse, ln, (int)(stesc - buf->buf), |
"%.*s", (int)naml, stnam); |
"%.*s", (int)naml, stnam); |
res = ""; |
res = ""; |
|
} else if (buf->sz + strlen(res) > SHRT_MAX) { |
|
mandoc_msg(MANDOCERR_ROFFLOOP, r->parse, |
|
ln, (int)(stesc - buf->buf), NULL); |
|
return(ROFF_IGN); |
} |
} |
|
|
/* Replace the escape sequence by the string. */ |
/* Replace the escape sequence by the string. */ |
Line 659 roff_res(struct roff *r, struct buf *buf, int ln, int |
|
Line 663 roff_res(struct roff *r, struct buf *buf, int ln, int |
|
buf->sz = mandoc_asprintf(&nbuf, "%s%s%s", |
buf->sz = mandoc_asprintf(&nbuf, "%s%s%s", |
buf->buf, res, cp) + 1; |
buf->buf, res, cp) + 1; |
|
|
if (buf->sz > SHRT_MAX) { |
|
mandoc_msg(MANDOCERR_ROFFLOOP, r->parse, |
|
ln, (int)(stesc - buf->buf), NULL); |
|
return(ROFF_IGN); |
|
} |
|
|
|
/* Prepare for the next replacement. */ |
/* Prepare for the next replacement. */ |
|
|
start = nbuf + pos; |
start = nbuf + pos; |
Line 1165 roff_cond_sub(ROFF_ARGS) |
|
Line 1163 roff_cond_sub(ROFF_ARGS) |
|
*ep = '&'; |
*ep = '&'; |
roff_ccond(r, ln, ep - buf->buf - 1); |
roff_ccond(r, ln, ep - buf->buf - 1); |
} |
} |
++ep; |
if (*ep != '\0') |
|
++ep; |
} |
} |
return(rr ? ROFF_CONT : ROFF_IGN); |
return(rr ? ROFF_CONT : ROFF_IGN); |
} |
} |
Line 1185 roff_cond_text(ROFF_ARGS) |
|
Line 1184 roff_cond_text(ROFF_ARGS) |
|
*ep = '&'; |
*ep = '&'; |
roff_ccond(r, ln, ep - buf->buf - 1); |
roff_ccond(r, ln, ep - buf->buf - 1); |
} |
} |
++ep; |
if (*ep != '\0') |
|
++ep; |
} |
} |
return(rr ? ROFF_CONT : ROFF_IGN); |
return(rr ? ROFF_CONT : ROFF_IGN); |
} |
} |