… | |
… | |
62 | { |
62 | { |
63 | if (SvROK (sv) && SvTYPE (SvRV (sv)) == SVt_PVAV) |
63 | if (SvROK (sv) && SvTYPE (SvRV (sv)) == SVt_PVAV) |
64 | { |
64 | { |
65 | AV *av = (AV *)SvRV (sv); |
65 | AV *av = (AV *)SvRV (sv); |
66 | |
66 | |
67 | sv = AvFILLp (av) < 0 ? &PL_sv_undef : AvARRAY (av)[0]; |
67 | sv = AvFILLp (av) < 0 || !AvARRAY (sv)[0] |
|
|
68 | ? &PL_sv_undef : AvARRAY (av)[0]; |
68 | } |
69 | } |
69 | |
70 | |
70 | return sv; |
71 | return sv; |
71 | } |
72 | } |
72 | |
73 | |
… | |
… | |
79 | sv = SvRV (sv); |
80 | sv = SvRV (sv); |
80 | |
81 | |
81 | if (SvTYPE (sv) != SVt_PVAV) |
82 | if (SvTYPE (sv) != SVt_PVAV) |
82 | return; |
83 | return; |
83 | |
84 | |
|
|
85 | if ( |
|
|
86 | AvFILL ((AV *)sv) < 1 |
|
|
87 | || AvARRAY ((AV *)sv)[1] == 0 |
84 | if (AvFILL ((AV *)sv) < 1 || AvARRAY ((AV *)sv)[1] == &PL_sv_undef) |
88 | || AvARRAY ((AV *)sv)[1] == &PL_sv_undef) |
85 | av_store ((AV *)sv, 1, newSViv (idx)); |
89 | av_store ((AV *)sv, 1, newSViv (idx)); |
86 | else |
90 | else |
87 | { |
91 | { |
88 | sv = AvARRAY ((AV *)sv)[1]; |
92 | sv = AvARRAY ((AV *)sv)[1]; |
89 | |
93 | |