summaryrefslogtreecommitdiff
path: root/universal.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-12-25 00:04:18 -0800
committerFather Chrysostomos <sprout@cpan.org>2011-12-25 00:04:18 -0800
commit7f9aa7d32945332aeb1251c905307d22abfd4da5 (patch)
tree06b05d24fdff4b5c0a141d2ee507eac19bbdb392 /universal.c
parent2956677f16b3d9366664cba5432a7266c3698a86 (diff)
downloadperl-7f9aa7d32945332aeb1251c905307d22abfd4da5.tar.gz
[perl #97956] PerlIO::get_layers: call get-magic
Diffstat (limited to 'universal.c')
-rw-r--r--universal.c10
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 ?