summaryrefslogtreecommitdiff
path: root/tests/pcre-jitstack
blob: bdae37bde8281478e00c6342d4893a0fb8c97580 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#! /bin/sh
# Grep 2.21 would report "grep: internal PCRE error: -27"
#
# Copyright 2015-2016 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.

. "${srcdir=.}/init.sh"; path_prepend_ ../src
require_pcre_

nl_base64=$(echo | (base64) 2>/dev/null) && test "X$nl_base64" = XCg== ||
  skip_ "your system lacks the base64 program"
foo=$( (echo foo | gzip | gzip -d) 2>/dev/null) && test "X$foo" = Xfoo ||
  skip_ "your system lacks the gzip program"

fail=0

base64 -d >pcrejit.txt.gz <<'EOF'
H4sIAAAAAAACA+2bUU4DMQxE/7mMz5T7XwKE+IBKVLue58yk0B9EtX6xJxN7t4VaH69a6+tHrW+/
r4e3n75KARWShSOFTtiumE3FPVyo79ATIJ0Ry0No/yXe99UIUqTGKKUzYHFJHJoaCONQDCnDSCDS
IPAvGCVeXNsZ7lpbWFfdaZtgPos5LeK2C1TBKzD09V3HFlCOsbFT/hNbz4HzJaRjnjdam9FXw/o6
VyPozhMmiaRYAMeNSJR1iMjBEFLMtsH7lptartfxkzPQgFVofwRlxKsMYn2KNDnU9fsOQCkRIYVT
G80ZRqBpSQjRYPX7s9gvtqknyNE2f8V09sxHM7YPmMMJgrmVna2AT717n5fUAIDkiBCqFgWUUgKD
8jOc0Rgj5JS6vZnQI14wkaTDAkD266p/iVHs8gjCrMFARVM0iEVgFAa9YRAQT4tkgsmloTJLmyCm
uSHRnTkzIdZMmZ5kYX/iJFtTwu9cFvr3aDWcUx4pUW/cVQwPoQSlwguNd4M0vTpAauKodmLFXv1P
dkcKkYUglER2Q4L4gnmOiNGzSBATwGQgwihs5/QffIhyfg4hJvM2r4Rp6L+1ibCCd4jYZ6jCiBlc
2+y4fl4yTGIwcWXNAUEeXmu8iCMV96DNTnmRNICDk2N5qaXGbsF91OX/0hlcYTjrMfy02p9Xv70D
mv3RZCFOAAA=
EOF
test $? -eq 0 || framework_failure_

gzip -d pcrejit.txt || framework_failure_

LC_ALL=C grep -P -n '^([/](?!/)|[^/])*~/.*' pcrejit.txt
if test $? != 1; then
    # The above often makes grep attempt to use an inordinate amount
    # of stack space.  If grep fails with $? != 1, try gain, but this
    # time with no soft limit:

    # Use ulimit to remove that limit, if possible.
    # If ulimit is not usable, just skip this test.
    (ulimit -s unlimited; : ) || skip_ this shell lacks ulimit support

    # Rerun that same test, but now with no limit on stack size:
    (ulimit -s unlimited;
     LC_ALL=C grep -P -n '^([/](?!/)|[^/])*~/.*' pcrejit.txt)
    test $? = 1 || fail=1
fi

Exit $fail