[git commit] awk: never return NULL from awk_printf()

Denys Vlasenko vda.linux at googlemail.com
Thu Sep 9 17:26:39 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=857800c65584d544242c54eb873129c23ba20265
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
awk_printf                                           651     628     -23

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

diff --git a/editors/awk.c b/editors/awk.c
index 6644d7d6f..f6314ac72 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -2338,7 +2338,7 @@ static char *awk_printf(node *n, size_t *len)
 
 	b = NULL;
 	i = 0;
-	while (*f) { /* "print one format spec" loop */
+	while (1) { /* "print one format spec" loop */
 		char *s;
 		char c;
 		char sv;
@@ -2363,7 +2363,7 @@ static char *awk_printf(node *n, size_t *len)
 			slen = f - s;
 			s = xstrndup(s, slen);
 			f++;
-			goto tail; /* print "....%" part verbatim */
+			goto append; /* print "....%" part verbatim */
 		}
 		while (1) {
 			if (isalpha(c))
@@ -2412,7 +2412,7 @@ static char *awk_printf(node *n, size_t *len)
 			slen = strlen(s);
 		}
 		*f = sv;
-
+ append:
 		if (i == 0) {
 			b = s;
 			i = slen;
@@ -2422,7 +2422,7 @@ static char *awk_printf(node *n, size_t *len)
 		b = xrealloc(b, i + slen + 1);
 		strcpy(b + i, s);
 		i += slen;
-		if (!c) /* tail? */
+		if (!c) /* s is NOT allocated and this is the last part of string? */
 			break;
 		free(s);
 	}


More information about the busybox-cvs mailing list