← Commit list

67b5eeb93

Denis Vlasenko
Denis Vlasenko
2009-04-12
FAILED Duration: 32s

Subject

awk: fix long field separators case. By Ian Wienand (ianw AT vmware.com)

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+4 -1
@@ -1574,7 +1574,10 @@ static int awk_split(const char *s, node *spl, char **slist)
if (s[l]) pmatch[0].rm_eo++;
}
memcpy(s1, s, l);
- s1[l] = '\0';
+ /* make sure we remove *all* of the separator chars */
+ while (l < pmatch[0].rm_eo) {
+ s1[l++] = '\0';
+ }
nextword(&s1);
s += pmatch[0].rm_eo;
} while (*s);
testsuite/awk.tests+6 -0
@@ -22,6 +22,12 @@ testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4.29497e+09\n" ""
testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2.14748e+09\n" "" "\n"
testing "awk oct const" "awk '{ print or(01234,1) }'" "669\n" "" "\n"
+# long field seps requiring regex
+testing "awk long field sep" "awk -F-- '{ print NF, length(\$NF), \$NF }'" \
+ "2 0 \n3 0 \n4 0 \n5 0 \n" \
+ "" \
+ "a--\na--b--\na--b--c--\na--b--c--d--"
+
# '@(samp|code|file)\{' is an invalid extended regex (unmatched '{'),
# but gawk 3.1.5 does not bail out on it.
testing "awk gsub falls back to non-extended-regex" \