summaryrefslogtreecommitdiff
path: root/ext/XS-APItest
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-08-16 16:46:20 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-08-21 16:51:14 -0700
commit7261499db89d7afd6c64079406dc32f10acfe512 (patch)
treed28b4da71ab3604a3a0b1258a85fe498d1615cef /ext/XS-APItest
parentb70d55581aad461af858eb07a2e80ed5fcc653c1 (diff)
downloadperl-7261499db89d7afd6c64079406dc32f10acfe512.tar.gz
Stop padlists from being AVs
In order to fix a bug, I need to add new fields to padlists. But I cannot easily do that as long as they are AVs. So I have created a new padlist struct. This not only allows me to extend the padlist struct with new members as necessary, but also saves memory, as we now have a three-pointer struct where before we had a whole SV head (3-4 pointers) + XPVAV (5 pointers). This will unfortunately break half of CPAN, but the pad API docs clearly say this: NOTE: this function is experimental and may change or be removed without notice. This would have broken B::Debug, but a patch sent upstream has already been integrated into blead with commit 9d2d23d981.
Diffstat (limited to 'ext/XS-APItest')
-rw-r--r--ext/XS-APItest/APItest.xs2
1 files changed, 1 insertions, 1 deletions
diff --git a/ext/XS-APItest/APItest.xs b/ext/XS-APItest/APItest.xs
index ffe0c43a68..05199208e6 100644
--- a/ext/XS-APItest/APItest.xs
+++ b/ext/XS-APItest/APItest.xs
@@ -3290,7 +3290,7 @@ CV* cv
AV *pad_namelist;
AV *retav = newAV();
CODE:
- pad_namelist = (AV*) *av_fetch(CvPADLIST(cv), 0, FALSE);
+ pad_namelist = *PADLIST_ARRAY(CvPADLIST(cv));
for ( i = av_len(pad_namelist); i >= 0; i-- ) {
SV** name_ptr = av_fetch(pad_namelist, i, 0);