diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-12-25 00:04:18 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-12-25 00:04:18 -0800 |
commit | 7f9aa7d32945332aeb1251c905307d22abfd4da5 (patch) | |
tree | 06b05d24fdff4b5c0a141d2ee507eac19bbdb392 /universal.c | |
parent | 2956677f16b3d9366664cba5432a7266c3698a86 (diff) | |
download | perl-7f9aa7d32945332aeb1251c905307d22abfd4da5.tar.gz |
[perl #97956] PerlIO::get_layers: call get-magic
Diffstat (limited to 'universal.c')
-rw-r--r-- | universal.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/universal.c b/universal.c index 2bcc740ee0..36800b8196 100644 --- a/universal.c +++ b/universal.c @@ -1004,14 +1004,10 @@ XS(XS_PerlIO_get_layers) } sv = POPs; - gv = MUTABLE_GV(sv); + gv = MAYBE_DEREF_GV(sv); - if (!isGV(sv)) { - if (SvROK(sv) && isGV(SvRV(sv))) - gv = MUTABLE_GV(SvRV(sv)); - else if (SvPOKp(sv)) - gv = gv_fetchsv(sv, 0, SVt_PVIO); - } + if (!gv && SvPOKp(sv)) + gv = gv_fetchsv_nomg(sv, 0, SVt_PVIO); if (gv && (io = GvIO(gv))) { AV* const av = PerlIO_get_layers(aTHX_ input ? |