=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/m4/eval.c,v retrieving revision 1.28 retrieving revision 1.29 diff -c -r1.28 -r1.29 *** src/usr.bin/m4/eval.c 2000/07/27 17:44:32 1.28 --- src/usr.bin/m4/eval.c 2001/06/13 12:20:43 1.29 *************** *** 1,4 **** ! /* $OpenBSD: eval.c,v 1.28 2000/07/27 17:44:32 espie Exp $ */ /* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: eval.c,v 1.29 2001/06/13 12:20:43 espie Exp $ */ /* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */ /* *************** *** 41,47 **** #if 0 static char sccsid[] = "@(#)eval.c 8.2 (Berkeley) 4/27/95"; #else ! static char rcsid[] = "$OpenBSD: eval.c,v 1.28 2000/07/27 17:44:32 espie Exp $"; #endif #endif /* not lint */ --- 41,47 ---- #if 0 static char sccsid[] = "@(#)eval.c 8.2 (Berkeley) 4/27/95"; #else ! static char rcsid[] = "$OpenBSD: eval.c,v 1.29 2001/06/13 12:20:43 espie Exp $"; #endif #endif /* not lint */ *************** *** 801,822 **** const char *ap, *fc, *k; int nc; - if (argc < 5) - nc = MAXTOK; - else - #ifdef EXPR - nc = expr(argv[4]); - #else - nc = atoi(argv[4]); - #endif ap = argv[2]; /* target string */ #ifdef EXPR fc = ap + expr(argv[3]); /* first char */ #else fc = ap + atoi(argv[3]); /* first char */ #endif if (fc >= ap && fc < ap + strlen(ap)) ! for (k = fc + min(nc, strlen(fc)) - 1; k >= fc; k--) putback(*k); } --- 801,821 ---- const char *ap, *fc, *k; int nc; ap = argv[2]; /* target string */ #ifdef EXPR fc = ap + expr(argv[3]); /* first char */ #else fc = ap + atoi(argv[3]); /* first char */ #endif + nc = strlen(fc); + if (argc >= 5) + #ifdef EXPR + nc = min(nc, expr(argv[4])); + #else + nc = min(nc, atoi(argv[4])); + #endif if (fc >= ap && fc < ap + strlen(ap)) ! for (k = fc + nc - 1; k >= fc; k--) putback(*k); }