More complete handling of padlists for XSUBs.
authorZefram <zefram@fysh.org>
Fri, 20 Mar 2015 17:24:06 +0000 (17:24 +0000)
committerNicholas Clark <nick@ccl4.org>
Wed, 25 Mar 2015 20:00:30 +0000 (21:00 +0100)
commit98b91a13eb79864172fa4bf6a7eb84ed0ab7d468
treec3eb221c45b11b759acfef23f2ac34853d6231b3
parentae8c8baa0aaa5377cb8093f5cefb61bd92902242
More complete handling of padlists for XSUBs.

[Code by Zefram, commit message by Nicholas]

Following discussion with Zefram on IRC, I agree that his code is more
correct than mine. Prior to the use of the CvPADLIST slot on an XSUB for
binary incompatibility detection, cv_undef() would unconditionally treat
CvPADLIST() as a pointer to a padlist structure (on both PVCVs and PVFMs),
walking it and calling the relevant free functions. Hence on those versions,
CvPADLIST could not be anything other than a legitimate padlist, else the
interpreter would crash. So we should be consistent and calculate the size
on the same basis.

CPAN #102909
CHANGES
Size.xs