[git commit master] awk: simple code shrink

Denys Vlasenko vda.linux at googlemail.com
Wed Mar 10 18:21:54 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=c9955f23a2a57c9822fc1dba5f3d1487dd8aacbc
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
awk_getline                                          710     724     +14
awk_printf                                           455     457      +2
hash_find                                            234     233      -1
qrealloc                                              33      31      -2
handle_special                                       499     482     -17
awk_sub                                              641     601     -40
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/4 up/down: 16/-60)            Total: -44 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 editors/awk.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/editors/awk.c b/editors/awk.c
index 5cc4adc..1d704e8 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -1513,12 +1513,13 @@ static regex_t *as_regex(node *op, regex_t *preg)
 }
 
 /* gradually increasing buffer */
-static void qrealloc(char **b, int n, int *size)
+static char* qrealloc(char *b, int n, int *size)
 {
-	if (!*b || n >= *size) {
+	if (!b || n >= *size) {
 		*size = n + (n>>1) + 80;
-		*b = xrealloc(*b, *size);
+		b = xrealloc(b, *size);
 	}
+	return b;
 }
 
 /* resize field storage space */
@@ -1678,7 +1679,7 @@ static void handle_special(var *v)
 				memcpy(b+len, sep, sl);
 				len += sl;
 			}
-			qrealloc(&b, len+l+sl, &bsize);
+			b = qrealloc(b, len+l+sl, &bsize);
 			memcpy(b+len, s, l);
 			len += l;
 		}
@@ -1790,7 +1791,8 @@ static int awk_getline(rstream *rsm, var *v)
 	c = (char) rsplitter.n.info;
 	rp = 0;
 
-	if (!m) qrealloc(&m, 256, &size);
+	if (!m)
+		m = qrealloc(m, 256, &size);
 	do {
 		b = m + a;
 		so = eo = p;
@@ -1831,7 +1833,7 @@ static int awk_getline(rstream *rsm, var *v)
 			a = 0;
 		}
 
-		qrealloc(&m, a+p+128, &size);
+		m = qrealloc(m, a+p+128, &size);
 		b = m + a;
 		pp = p;
 		p += safe_read(fd, b+p, size-p-1);
@@ -1910,7 +1912,7 @@ static char *awk_printf(node *n)
 		}
 
 		incr = (f - s) + MAXVARFMT;
-		qrealloc(&b, incr + i, &bsize);
+		b = qrealloc(b, incr + i, &bsize);
 		c = *f;
 		if (c != '\0') f++;
 		c1 = *f;
@@ -1923,7 +1925,7 @@ static char *awk_printf(node *n)
 					(char)getvar_i(arg) : *getvar_s(arg));
 		} else if (c == 's') {
 			s1 = getvar_s(arg);
-			qrealloc(&b, incr+i+strlen(s1), &bsize);
+			b = qrealloc(b, incr+i+strlen(s1), &bsize);
 			i += sprintf(b+i, s, s1);
 		} else {
 			i += fmt_num(b+i, incr, s, getvar_i(arg), FALSE);
@@ -1967,7 +1969,7 @@ static int awk_sub(node *rn, const char *repl, int nm, var *src, var *dest, int
 		so = pmatch[0].rm_so;
 		eo = pmatch[0].rm_eo;
 
-		qrealloc(&ds, di + eo + rl, &dssize);
+		ds = qrealloc(ds, di + eo + rl, &dssize);
 		memcpy(ds + di, sp, eo);
 		di += eo;
 		if (++i >= nm) {
@@ -1991,7 +1993,7 @@ static int awk_sub(node *rn, const char *repl, int nm, var *src, var *dest, int
 						ds[di++] = c;
 					} else {
 						n = pmatch[j].rm_eo - pmatch[j].rm_so;
-						qrealloc(&ds, di + rl + n, &dssize);
+						ds = qrealloc(ds, di + rl + n, &dssize);
 						memcpy(ds + di, sp + pmatch[j].rm_so, n);
 						di += n;
 					}
@@ -2010,7 +2012,7 @@ static int awk_sub(node *rn, const char *repl, int nm, var *src, var *dest, int
 		}
 	}
 
-	qrealloc(&ds, di + strlen(sp), &dssize);
+	ds = qrealloc(ds, di + strlen(sp), &dssize);
 	strcpy(ds + di, sp);
 	setvar_p(dest, ds);
 	if (re == &sreg)
-- 
1.6.3.3



More information about the busybox-cvs mailing list