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

Diff for /mandoc/roff.c between version 1.379 and 1.383

version 1.379, 2021/10/04 10:12:27 version 1.383, 2022/04/24 17:40:22
Line 1 
Line 1 
 /* $Id$ */  /* $Id$ */
 /*  /*
  * Copyright (c) 2010-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2010-2015, 2017-2022 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 861  void
Line 861  void
 roff_man_free(struct roff_man *man)  roff_man_free(struct roff_man *man)
 {  {
         roff_man_free1(man);          roff_man_free1(man);
           free(man->os_r);
         free(man);          free(man);
 }  }
   
Line 1400  roff_expand(struct roff *r, struct buf *buf, int ln, i
Line 1401  roff_expand(struct roff *r, struct buf *buf, int ln, i
   
                 term = '\0';                  term = '\0';
                 cp = stesc + 1;                  cp = stesc + 1;
                 if (*cp == 'E')                  while (*cp == 'E')
                         cp++;                          cp++;
                 esct = cp;                  esct = cp;
                 switch (*esct) {                  switch (*esct) {
Line 2432  roff_cond_sub(ROFF_ARGS)
Line 2433  roff_cond_sub(ROFF_ARGS)
                         }                          }
                 }                  }
         } else if (t != TOKEN_NONE &&          } else if (t != TOKEN_NONE &&
             (rr || roffs[t].flags & ROFFMAC_STRUCT))              (rr || roffs[t].flags & ROFFMAC_STRUCT)) {
                 irc |= (*roffs[t].proc)(r, t, buf, ln, ppos, pos, offs);                  irc |= (*roffs[t].proc)(r, t, buf, ln, ppos, pos, offs);
         else                  if (irc & ROFF_WHILE)
                           irc &= ~(ROFF_LOOPCONT | ROFF_LOOPEXIT);
           } else
                 irc |= rr ? ROFF_CONT : ROFF_IGN;                  irc |= rr ? ROFF_CONT : ROFF_IGN;
         return irc;          return irc;
 }  }
Line 3869  static int
Line 3872  static int
 roff_shift(ROFF_ARGS)  roff_shift(ROFF_ARGS)
 {  {
         struct mctx     *ctx;          struct mctx     *ctx;
         int              levels, i;          int              argpos, levels, i;
   
           argpos = pos;
         levels = 1;          levels = 1;
         if (buf->buf[pos] != '\0' &&          if (buf->buf[pos] != '\0' &&
             roff_evalnum(r, ln, buf->buf, &pos, &levels, 0) == 0) {              roff_evalnum(r, ln, buf->buf, &pos, &levels, 0) == 0) {
Line 3885  roff_shift(ROFF_ARGS)
Line 3889  roff_shift(ROFF_ARGS)
         ctx = r->mstack + r->mstackpos;          ctx = r->mstack + r->mstackpos;
         if (levels > ctx->argc) {          if (levels > ctx->argc) {
                 mandoc_msg(MANDOCERR_SHIFT,                  mandoc_msg(MANDOCERR_SHIFT,
                     ln, pos, "%d, but max is %d", levels, ctx->argc);                      ln, argpos, "%d, but max is %d", levels, ctx->argc);
                 levels = ctx->argc;                  levels = ctx->argc;
           }
           if (levels < 0) {
                   mandoc_msg(MANDOCERR_ARG_NEG, ln, argpos, "shift %d", levels);
                   levels = 0;
         }          }
         if (levels == 0)          if (levels == 0)
                 return ROFF_IGN;                  return ROFF_IGN;

Legend:
Removed from v.1.379  
changed lines
  Added in v.1.383

CVSweb