Michael W. Bombardieri
unread,Aug 5, 2016, 3:42:04 AM8/5/16You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hi tech,
I noticed that atoi(3)/expr() is called within min() macro.
Both atoi(3) and expr() return int.
Store result in temporary variable so we don't call the function twice?
- Michael
Index: eval.c
===================================================================
RCS file: /cvs/src/usr.bin/m4/eval.c,v
retrieving revision 1.74
diff -u -p -u -r1.74 eval.c
--- eval.c 5 Feb 2015 12:59:57 -0000 1.74
+++ eval.c 5 Aug 2016 06:24:57 -0000
@@ -871,12 +871,15 @@ dosub(const char *argv[], int argc)
fc = ap + atoi(argv[3]); /* first char */
#endif
nc = strlen(fc);
- if (argc >= 5)
+ if (argc >= 5) {
+ int e;
#ifdef EXPR
- nc = min(nc, expr(argv[4]));
+ e = expr(argv[4]);
#else
- nc = min(nc, atoi(argv[4]));
+ e = atoi(argv[4]);
#endif
+ nc = min(nc, e);
+ }
if (fc >= ap && fc < ap + strlen(ap))
for (k = fc + nc - 1; k >= fc; k--)
pushback(*k);