blob: d3d97d4cc57d8a0b40dac15e3535e7dc16a1c759 [file] [log] [blame]
echo T.overflow: test some overflow conditions
awk=${awk-../a.out}
$awk 'BEGIN {
for (i = 0; i < 1000; i++) printf("abcdefghijklmnopqsrtuvwxyz")
printf("\n")
exit
}' >foo1
$awk '{print}' foo1 >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow record 1'
echo 'abcdefghijklmnopqsrtuvwxyz' >foo1
echo hello | $awk '
{ for (i = 1; i < 500; i++) s = s "abcdefghijklmnopqsrtuvwxyz "
$0 = s
print $1
}' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow abcdef'
# default input record 3072, fields 200:
$awk '
BEGIN {
for (j = 0; j < 2; j++) {
for (i = 0; i < 500; i++)
printf(" 123456789")
printf("\n");
}
} ' >foo1
$awk '{$1 = " 123456789"; print}' foo1 >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf set $1'
$awk '
BEGIN {
for (j = 0; j < 2; j++) {
for (i = 0; i < 500; i++)
printf(" 123456789")
printf("\n");
}
} ' >foo
$awk '{print NF}' foo >foo1
echo '500
500' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf NF'
rm -f core
# this should not drop core
$awk 'BEGIN {
for (i = 1; i < 1000; i++) s = s "a-z"
if ("x" ~ "[" s "]")
print "ugh"
}' >foo 2>foo
test -r core && echo 1>&2 "BAD: T.overflow too long char class dropped core"
echo 4000004 >foo1
$awk '
BEGIN {
x1 = sprintf("%1000000s\n", "hello")
x2 = sprintf("%-1000000s\n", "world")
x3 = sprintf("%1000000.1000000s\n", "goodbye")
x4 = sprintf("%-1000000.1000000s\n", "goodbye")
print length(x1 x2 x3 x4)
}' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow huge sprintfs'
echo 0 >foo1
$awk '
BEGIN {
for (i = 0; i < 100000; i++)
x[i] = i
for (i in x)
delete x[i]
n = 0
for (i in x)
n++
print n
}' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow big array'
echo x >foo1
$awk '{print $40000000000000}' <foo1 >foo2 2>foo
grep "out of range field" foo >/dev/null || echo 1>&2 "BAD: T.overflow \$400000"
rm -rf /tmp/awktestfoo*
$awk 'BEGIN { for (i=1; i <= 1000; i++) print i >("/tmp/awktestfoo" i) }'
ls /tmp/awktestfoo* | grep '1000' >/dev/null || echo 1>&2 "BAD: T.overflow openfiles"