Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.busybox.net/busybox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-09-09 20:26:39 +0300
committerDenys Vlasenko <vda.linux@googlemail.com>2021-09-09 20:26:39 +0300
commit857800c65584d544242c54eb873129c23ba20265 (patch)
treeda3d99903bd02a05d1a6469dfbbd71b9b9514f07 /editors
parente60c56932ed95eb1c72b12d7404d42798da61bca (diff)
awk: never return NULL from awk_printf()
function old new delta awk_printf 651 628 -23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors')
-rw-r--r--editors/awk.c8
1 files 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);
}