| 1 | #!perl -X |
| 2 | # |
| 3 | # Regression test for [perl #74170] (missing SPAGAIN after DD_Dump(...)): |
| 4 | # Since it’s so large, it gets its own file. |
| 5 | |
| 6 | BEGIN { |
| 7 | require Config; import Config; |
| 8 | no warnings 'once'; |
| 9 | if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { |
| 10 | print "1..0 # Skip: Data::Dumper was not built\n"; |
| 11 | exit 0; |
| 12 | } |
| 13 | } |
| 14 | |
| 15 | use strict; |
| 16 | use Test::More tests => 1; |
| 17 | use Data::Dumper; |
| 18 | |
| 19 | our %repos = (); |
| 20 | &real_life_setup(); |
| 21 | |
| 22 | $Data::Dumper::Indent = 1; |
| 23 | # A custom sort sub is necessary for reproducing the bug, as this is where |
| 24 | # the stack gets reallocated. |
| 25 | $Data::Dumper::Sortkeys = sub { return [ reverse sort keys %{$_[0]} ]; } |
| 26 | unless exists $ENV{NO_SORT_SUB}; |
| 27 | |
| 28 | ok +Data::Dumper->Dumpxs([\%repos], [qw(*repos)]); |
| 29 | |
| 30 | sub real_life_setup { |
| 31 | # set up the %repos hash in a manner that reflects a real run of |
| 32 | # gitolite's "compiler" script: |
| 33 | # Yes, all this is necessary to get the stack in such a state that the |
| 34 | # custom sort sub will trigger a reallocation. |
| 35 | push @{ $repos{''}{'@all'} }, (); |
| 36 | push @{ $repos{''}{'guser86'} }, (); |
| 37 | push @{ $repos{''}{'guser87'} }, (); |
| 38 | push @{ $repos{''}{'user88'} }, (); |
| 39 | push @{ $repos{''}{'grussell'} }, (); |
| 40 | push @{ $repos{''}{'guser0'} }, (); |
| 41 | push @{ $repos{''}{'guser1'} }, (); |
| 42 | push @{ $repos{''}{'guser10'} }, (); |
| 43 | push @{ $repos{''}{'guser11'} }, (); |
| 44 | push @{ $repos{''}{'guser12'} }, (); |
| 45 | push @{ $repos{''}{'guser13'} }, (); |
| 46 | push @{ $repos{''}{'guser14'} }, (); |
| 47 | push @{ $repos{''}{'guser15'} }, (); |
| 48 | push @{ $repos{''}{'guser16'} }, (); |
| 49 | push @{ $repos{''}{'guser17'} }, (); |
| 50 | push @{ $repos{''}{'guser18'} }, (); |
| 51 | push @{ $repos{''}{'guser19'} }, (); |
| 52 | push @{ $repos{''}{'guser2'} }, (); |
| 53 | push @{ $repos{''}{'guser20'} }, (); |
| 54 | push @{ $repos{''}{'guser21'} }, (); |
| 55 | push @{ $repos{''}{'guser22'} }, (); |
| 56 | push @{ $repos{''}{'guser23'} }, (); |
| 57 | push @{ $repos{''}{'guser24'} }, (); |
| 58 | push @{ $repos{''}{'guser25'} }, (); |
| 59 | push @{ $repos{''}{'guser26'} }, (); |
| 60 | push @{ $repos{''}{'guser27'} }, (); |
| 61 | push @{ $repos{''}{'guser28'} }, (); |
| 62 | push @{ $repos{''}{'guser29'} }, (); |
| 63 | push @{ $repos{''}{'guser3'} }, (); |
| 64 | push @{ $repos{''}{'guser30'} }, (); |
| 65 | push @{ $repos{''}{'guser31'} }, (); |
| 66 | push @{ $repos{''}{'guser32'} }, (); |
| 67 | push @{ $repos{''}{'guser33'} }, (); |
| 68 | push @{ $repos{''}{'guser34'} }, (); |
| 69 | push @{ $repos{''}{'guser35'} }, (); |
| 70 | push @{ $repos{''}{'guser36'} }, (); |
| 71 | push @{ $repos{''}{'guser37'} }, (); |
| 72 | push @{ $repos{''}{'guser38'} }, (); |
| 73 | push @{ $repos{''}{'guser39'} }, (); |
| 74 | push @{ $repos{''}{'guser4'} }, (); |
| 75 | push @{ $repos{''}{'guser40'} }, (); |
| 76 | push @{ $repos{''}{'guser41'} }, (); |
| 77 | push @{ $repos{''}{'guser42'} }, (); |
| 78 | push @{ $repos{''}{'guser43'} }, (); |
| 79 | push @{ $repos{''}{'guser44'} }, (); |
| 80 | push @{ $repos{''}{'guser45'} }, (); |
| 81 | push @{ $repos{''}{'guser46'} }, (); |
| 82 | push @{ $repos{''}{'guser47'} }, (); |
| 83 | push @{ $repos{''}{'guser48'} }, (); |
| 84 | push @{ $repos{''}{'guser49'} }, (); |
| 85 | push @{ $repos{''}{'guser5'} }, (); |
| 86 | push @{ $repos{''}{'guser50'} }, (); |
| 87 | push @{ $repos{''}{'guser51'} }, (); |
| 88 | push @{ $repos{''}{'guser52'} }, (); |
| 89 | push @{ $repos{''}{'guser53'} }, (); |
| 90 | push @{ $repos{''}{'guser54'} }, (); |
| 91 | push @{ $repos{''}{'guser55'} }, (); |
| 92 | push @{ $repos{''}{'guser56'} }, (); |
| 93 | push @{ $repos{''}{'guser57'} }, (); |
| 94 | push @{ $repos{''}{'guser58'} }, (); |
| 95 | push @{ $repos{''}{'guser59'} }, (); |
| 96 | push @{ $repos{''}{'guser6'} }, (); |
| 97 | push @{ $repos{''}{'guser60'} }, (); |
| 98 | push @{ $repos{''}{'guser61'} }, (); |
| 99 | push @{ $repos{''}{'guser62'} }, (); |
| 100 | push @{ $repos{''}{'guser63'} }, (); |
| 101 | push @{ $repos{''}{'guser64'} }, (); |
| 102 | push @{ $repos{''}{'guser65'} }, (); |
| 103 | push @{ $repos{''}{'guser66'} }, (); |
| 104 | push @{ $repos{''}{'guser67'} }, (); |
| 105 | push @{ $repos{''}{'guser68'} }, (); |
| 106 | push @{ $repos{''}{'guser69'} }, (); |
| 107 | push @{ $repos{''}{'guser7'} }, (); |
| 108 | push @{ $repos{''}{'guser70'} }, (); |
| 109 | push @{ $repos{''}{'guser71'} }, (); |
| 110 | push @{ $repos{''}{'guser72'} }, (); |
| 111 | push @{ $repos{''}{'guser73'} }, (); |
| 112 | push @{ $repos{''}{'guser74'} }, (); |
| 113 | push @{ $repos{''}{'guser75'} }, (); |
| 114 | push @{ $repos{''}{'guser76'} }, (); |
| 115 | push @{ $repos{''}{'guser77'} }, (); |
| 116 | push @{ $repos{''}{'guser78'} }, (); |
| 117 | push @{ $repos{''}{'guser79'} }, (); |
| 118 | push @{ $repos{''}{'guser8'} }, (); |
| 119 | push @{ $repos{''}{'guser80'} }, (); |
| 120 | push @{ $repos{''}{'guser81'} }, (); |
| 121 | push @{ $repos{''}{'guser82'} }, (); |
| 122 | push @{ $repos{''}{'guser83'} }, (); |
| 123 | push @{ $repos{''}{'guser84'} }, (); |
| 124 | push @{ $repos{''}{'guser85'} }, (); |
| 125 | push @{ $repos{''}{'guser9'} }, (); |
| 126 | push @{ $repos{''}{'user1'} }, (); |
| 127 | push @{ $repos{''}{'user10'} }, (); |
| 128 | push @{ $repos{''}{'user11'} }, (); |
| 129 | push @{ $repos{''}{'user12'} }, (); |
| 130 | push @{ $repos{''}{'user13'} }, (); |
| 131 | push @{ $repos{''}{'user14'} }, (); |
| 132 | push @{ $repos{''}{'user15'} }, (); |
| 133 | push @{ $repos{''}{'user16'} }, (); |
| 134 | push @{ $repos{''}{'user2'} }, (); |
| 135 | push @{ $repos{''}{'user3'} }, (); |
| 136 | push @{ $repos{''}{'user4'} }, (); |
| 137 | push @{ $repos{''}{'user5'} }, (); |
| 138 | push @{ $repos{''}{'user6'} }, (); |
| 139 | push @{ $repos{''}{'user7'} }, (); |
| 140 | $repos{''}{R}{'user8'} = 1; |
| 141 | $repos{''}{W}{'user8'} = 1; |
| 142 | push @{ $repos{''}{'user8'} }, (); |
| 143 | } |