ref: 10e72d182aad860492f6ec2e80b0c05a4dc20b7a
dir: /test/T.overflow/
#!/bin/rc
echo T.overflow: test some overflow conditions
$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 foo*
$awk 'BEGIN { for (i=1; i <= 1000; i++) print i >("foo" i) }'
ls foo* | grep '1000' >/dev/null || echo >[1=2] 'BAD: T.overflow openfiles'
rm foo*