summaryrefslogtreecommitdiff
path: root/tests/misc
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2013-01-23 12:34:46 +0000
committerPádraig Brady <P@draigBrady.com>2013-04-14 01:01:21 +0100
commit1fe218888aace1703f78e0af0059d7a15485bf7f (patch)
tree814d8ed411722cf1bb074fe5be861a4e4c7c9d6c /tests/misc
parent8901e010fa24ba375d53e3e37fc7819621adcf19 (diff)
downloadcoreutils-1fe218888aace1703f78e0af0059d7a15485bf7f.tar.xz
head: with --bytes=-N only allocate memory as needed
* src/head.c (elide_tail_bytes_pipe): Don't use calloc as that bypasses memory overcommit due to the zeroing requirement. Also realloc rather than malloc the pointer array to avoid dependence on overcommit entirely. * tests/misc/head-c.sh: Add a test case. Fixes http://bugs.gnu.org/13530
Diffstat (limited to 'tests/misc')
-rwxr-xr-xtests/misc/head-c.sh9
1 files changed, 7 insertions, 2 deletions
diff --git a/tests/misc/head-c.sh b/tests/misc/head-c.sh
index 6807c4d5a..eada8d550 100755
--- a/tests/misc/head-c.sh
+++ b/tests/misc/head-c.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# exercise the fix of 2001-08-18, based on test case from Ian Bruce
+# exercise head -c
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
@@ -19,12 +19,17 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ head
+# exercise the fix of 2001-08-18, based on test case from Ian Bruce
echo abc > in || framework_failure_
-
(head -c1; head -c1) < in > out || fail=1
case "$(cat out)" in
ab) ;;
*) fail=1 ;;
esac
+# Only allocate memory as needed.
+# Coreutils <= 8.21 would allocate memory up front
+# based on the value passed to -c
+(ulimit -v 20000; head --bytes=-E < /dev/null) || fail=1
+
Exit $fail