summaryrefslogtreecommitdiff
path: root/usr.bin/awk/run.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/awk/run.c')
-rw-r--r--usr.bin/awk/run.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/usr.bin/awk/run.c b/usr.bin/awk/run.c
index af1153f6b7d..73ab148952b 100644
--- a/usr.bin/awk/run.c
+++ b/usr.bin/awk/run.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: run.c,v 1.83 2023/11/28 20:54:38 millert Exp $ */
+/* $OpenBSD: run.c,v 1.84 2024/01/25 16:40:51 millert Exp $ */
/****************************************************************
Copyright (C) Lucent Technologies 1997
All Rights Reserved
@@ -796,7 +796,7 @@ int runetochar(char *str, int c)
Cell *matchop(Node **a, int n) /* ~ and match() */
{
- Cell *x, *y;
+ Cell *x, *y, *z;
char *s, *t;
int i;
int cstart, cpatlen, len;
@@ -818,7 +818,7 @@ Cell *matchop(Node **a, int n) /* ~ and match() */
i = (*mf)(pfa, s);
tempfree(y);
}
- tempfree(x);
+ z = x;
if (n == MATCHFCN) {
int start = patbeg - s + 1; /* origin 1 */
if (patlen < 0) {
@@ -840,11 +840,13 @@ Cell *matchop(Node **a, int n) /* ~ and match() */
x = gettemp();
x->tval = NUM;
x->fval = start;
- return x;
} else if ((n == MATCH && i == 1) || (n == NOTMATCH && i == 0))
- return(True);
+ x = True;
else
- return(False);
+ x = False;
+
+ tempfree(z);
+ return x;
}
@@ -1299,7 +1301,8 @@ int format(char **pbuf, int *pbufsize, const char *s, Node *a) /* printf-like co
if (bs == NULL) { // invalid character
// use unicode invalid character, 0xFFFD
- bs = "\357\277\275";
+ static char invalid_char[] = "\357\277\275";
+ bs = invalid_char;
count = 3;
}
t = bs;
@@ -2567,7 +2570,7 @@ Cell *dosub(Node **a, int subop) /* sub and gsub */
start = getsval(x);
while (pmatch(pfa, start)) {
if (buf == NULL) {
- if ((pb = buf = malloc(bufsz)) == NULL)
+ if ((pb = buf = (char *) malloc(bufsz)) == NULL)
FATAL("out of memory in dosub");
tempstat = pfa->initstat;
pfa->initstat = 2;
@@ -2672,7 +2675,7 @@ Cell *gensub(Node **a, int nnn) /* global selective substitute */
int mflag, tempstat, num, whichm;
int bufsz = recsize;
- if ((buf = malloc(bufsz)) == NULL)
+ if ((buf = (char *) malloc(bufsz)) == NULL)
FATAL("out of memory in gensub");
mflag = 0; /* if mflag == 0, can replace empty string */
num = 0;