Fix [perl #66970] Incorrect coderef in MODIFY_CODE_ATTRIBUTES
authorZefram <zefram@fysh.org>
Sun, 6 Sep 2009 15:29:43 +0000 (17:29 +0200)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Sun, 6 Sep 2009 15:29:43 +0000 (17:29 +0200)
commit09330df80caf214f375fcf0c04857347e3b17c69
treefec7b3d172bb87f3b40e36eae142d75c86ccb5fa
parente21653cdba5d2e4ad2c0eab57d79cbcabc10f7b3
Fix [perl #66970] Incorrect coderef in MODIFY_CODE_ATTRIBUTES

Attribute handlers being applied to a temporary CV has actually been
reported as a bug, #66970.  The attached patch fixes the bug, by
changing the order in which things happen: attributes are now applied
after the temporary CV has been merged into the existing CV or has
otherwise been added to the appropriate GV.

The change breaks part of Attribute::Handlers.  Part of A:H searches the
package to find the name of the sub to which a :ATTR attribute is being
applied, and the correct time at which to launch that search depends
crucially on the order in which the CV construction events occur. So
this patch also includes a change to A:H, to make it detect which way
things happen.  The resulting A:H works either way, which is essential
for its dual-life nature.
ext/Attribute-Handlers/lib/Attribute/Handlers.pm
op.c
t/op/attrs.t