[BACK]Return to roff.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/roff.c between version 1.245 and 1.247

version 1.245, 2014/12/25 17:23:32 version 1.247, 2015/01/01 19:28:49
Line 1 
Line 1 
 /*      $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);
 }  }

Legend:
Removed from v.1.245  
changed lines
  Added in v.1.247

CVSweb