awkgetline: do not access unitialized data on EOF
getrec() returns 0 on EOF and leaves the contents of buf unchanged. Fixes #133.
This commit is contained in:
parent
275a80ff33
commit
1debe1993f
14
run.c
14
run.c
|
@ -447,13 +447,15 @@ Cell *awkgetline(Node **a, int n) /* get next line from specific input */
|
||||||
n = getrec(&record, &recsize, true);
|
n = getrec(&record, &recsize, true);
|
||||||
else { /* getline var */
|
else { /* getline var */
|
||||||
n = getrec(&buf, &bufsize, false);
|
n = getrec(&buf, &bufsize, false);
|
||||||
x = execute(a[0]);
|
if (n > 0) {
|
||||||
setsval(x, buf);
|
x = execute(a[0]);
|
||||||
if (is_number(x->sval, & result)) {
|
setsval(x, buf);
|
||||||
x->fval = result;
|
if (is_number(x->sval, & result)) {
|
||||||
x->tval |= NUM;
|
x->fval = result;
|
||||||
|
x->tval |= NUM;
|
||||||
|
}
|
||||||
|
tempfree(x);
|
||||||
}
|
}
|
||||||
tempfree(x);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setfval(r, (Awkfloat) n);
|
setfval(r, (Awkfloat) n);
|
||||||
|
|
Loading…
Reference in New Issue