← Commit list

7985bc109

Denys Vlasenko
Denys Vlasenko
2013-10-12
SUCCESS Duration: 171s

Subject

awk: fix length(array)

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

editors/awk.c+9 -1
@@ -2784,8 +2784,16 @@ static var *evaluate(node *op, var *res)
break;
case F_le:
- if (!op1)
+ debug_printf_eval("length: L.s:'%s'\n", L.s);
+ if (!op1) {
L.s = getvar_s(intvar[F0]);
+ debug_printf_eval("length: L.s='%s'\n", L.s);
+ }
+ else if (L.v->type & VF_ARRAY) {
+ R_d = L.v->x.array->nel;
+ debug_printf_eval("length: array_len:%d\n", L.v->x.array->nel);
+ break;
+ }
R_d = strlen(L.s);
break;
testsuite/awk.tests+5 -0
@@ -274,6 +274,11 @@ testing "awk large integer" \
"2147483647 2147483647 0 2147483648 2147483648 0\n" \
"" ""
+testing "awk length(array)" \
+ "awk 'BEGIN{ A[1]=2; A["qwe"]="asd"; print length(A)}'" \
+ "2\n" \
+ "" ""
+
# testing "description" "command" "result" "infile" "stdin"
exit $FAILCOUNT