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

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

version 1.381, 2022/04/13 13:19:34 version 1.383, 2022/04/24 17:40:22
Line 2433  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 3870  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 3886  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.381  
changed lines
  Added in v.1.383

CVSweb