| # "Check many leaks" test #1 |
| # Cramming all kinds of weird commands in here. |
| # As you find leaks, please create separate, small test |
| # for each leak. |
| # Narrowing down the leak using this large test may be difficult. |
| # It is intended to be a blanket "is everything ok?" test |
| |
| echo "Warm up" |
| i=1 |
| l=1 |
| t=1 |
| export t |
| while test $i != 99; do |
| t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 |
| { t=value3_$i /bin/true; } </dev/null |
| if true; t=valueA_$i false >>/dev/null; true; then |
| : << HERE >/dev/null; true <<HERE |
| Hello builtin : |
| HERE |
| Hello $i true |
| HERE |
| elif false; then |
| true; echo Doesnt run |
| else |
| { true; }; echo Doesnt run too >>/foo/bar |
| fi |
| { : /bin/*; } |
| unset var |
| echo >/dev/null ${var#} |
| echo >/dev/null ${var##} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%} |
| echo >/dev/null ${var%%} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| var= |
| echo >/dev/null ${var#} |
| echo >/dev/null ${var##} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%} |
| echo >/dev/null ${var%%} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| var=ababcdcd |
| echo >/dev/null ${var#ab} |
| echo >/dev/null ${var##ab} |
| echo >/dev/null ${var#a*b} |
| echo >/dev/null ${var##a*b} |
| echo >/dev/null ${var#?} |
| echo >/dev/null ${var##?} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%cd} |
| echo >/dev/null ${var%%cd} |
| echo >/dev/null ${var%c*d} |
| echo >/dev/null ${var%%c*d} |
| echo >/dev/null ${var%?} |
| echo >/dev/null ${var%%?} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| set -- par1_$i par2_$i par3_$i par4_$i |
| trap "echo trap$i" WINCH |
| f() { true; true; true; true; true; true; true; true; } |
| f() { true; true; true; true; true; true; true; true; echo $1; } |
| i=iii$i t=ttt$i z=zzz$i f >/dev/null |
| : $((i++)) |
| done |
| unset i l t |
| unset -f f |
| |
| memleak |
| |
| echo "Measuring memory leak..." |
| # Please copy the entire block from above verbatim |
| i=1 |
| l=1 |
| t=1 |
| export t |
| while test $i != 99; do |
| t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 |
| { t=value3_$i /bin/true; } </dev/null |
| if true; t=valueA_$i false >>/dev/null; true; then |
| : << HERE >/dev/null; true <<HERE |
| Hello builtin : |
| HERE |
| Hello $i true |
| HERE |
| elif false; then |
| true; echo Doesnt run |
| else |
| { true; }; echo Doesnt run too >>/foo/bar |
| fi |
| { : /bin/*; } |
| unset var |
| echo >/dev/null ${var#} |
| echo >/dev/null ${var##} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%} |
| echo >/dev/null ${var%%} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| var= |
| echo >/dev/null ${var#} |
| echo >/dev/null ${var##} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%} |
| echo >/dev/null ${var%%} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| var=ababcdcd |
| echo >/dev/null ${var#ab} |
| echo >/dev/null ${var##ab} |
| echo >/dev/null ${var#a*b} |
| echo >/dev/null ${var##a*b} |
| echo >/dev/null ${var#?} |
| echo >/dev/null ${var##?} |
| echo >/dev/null ${var#*} |
| echo >/dev/null ${var##*} |
| echo >/dev/null ${var%cd} |
| echo >/dev/null ${var%%cd} |
| echo >/dev/null ${var%c*d} |
| echo >/dev/null ${var%%c*d} |
| echo >/dev/null ${var%?} |
| echo >/dev/null ${var%%?} |
| echo >/dev/null ${var%*} |
| echo >/dev/null ${var%%*} |
| set -- par1_$i par2_$i par3_$i par4_$i |
| trap "echo trap$i" WINCH |
| f() { true; true; true; true; true; true; true; true; } |
| f() { true; true; true; true; true; true; true; true; echo $1; } |
| i=iii$i t=ttt$i z=zzz$i f >/dev/null |
| : $((i++)) |
| done |
| unset i l t |
| unset -f f |
| |
| |
| memleak |
| kb=$? |
| if test $kb -le 4; then |
| echo Ok #$kb |
| else |
| echo "Bad: $kb kb leaked" |
| fi |