This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rationalise gv.c:gv_magicalize
authorFather Chrysostomos <sprout@cpan.org>
Thu, 4 Aug 2016 21:29:48 +0000 (14:29 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 5 Aug 2016 00:42:39 +0000 (17:42 -0700)
commit1321bbe3f8d8397a8e988bac47b8f93b689b805b
tree09e55dc9dec0646d338196291b360a41c73bca93
parent5b2ef88ec2b538ad872eb354160909d8bd529aa7
Rationalise gv.c:gv_magicalize

This code is confusing, and confusion has resulted in bugs.  So rework
the code a bit to make it more comprehensible.

gv_magicalize no longer has such an arcane return value.  What it does
now is simply add appropriate magic to (or do appropriate vivification
in) the GV passed as its argument.  It returns true if magic or vivi-
fication was applicable.

The caller (gv_fetchpvn_flags) uses that return value to determine
whether to install the GV in the symbol table, if the caller has
requested that a symbol only be added if it is a magical one
(GV_ADDMG).

This reworking does mean that the GV is now checked for content even
when it would make no difference, but I think the resulting clarity
(ahem, *relative* clarity) of the code is worth it.
embed.fnc
embed.h
gv.c
proto.h