- padlist = newAV();
- AvREAL_off(padlist);
- av_fill(padlist, fpadlist);
- CvPADLIST(cv) = padlist;
-
- padname = newAV();
- av_fill(padname, fpadname);
- if (fpadname >= 0) {
- I32 j;
- SV **psvp = AvARRAY(protopadname);
- SV **svp = AvARRAY(padname);
-
- svp[0] = &PL_sv_undef;
- for (j = 1; j <= fpadname; ++j)
- svp[j] = SvREFCNT_inc(psvp[j]);
- }
- AvARRAY(padlist)[0] = MUTABLE_SV(padname);
-
- if (fpadlist >= 1) {
- I32 i;
-
- for (i = 1; i <= fpadlist; ++i) {
- AV *protoframe = MUTABLE_AV(AvARRAY(protopadlist)[i]);
- AV *frame = newAV();
- SV **psvp = AvARRAY(protoframe);
- SV **svp;
- I32 j, fframe = AvFILLp(protoframe);
-
- av_fill(frame, fframe);
- svp = AvARRAY(frame);
- if (i == 1) {
- AV *a0 = newAV(); /* will be @_ */
- AvREAL_off(a0);
- AvREIFY_on(a0);
- svp[0] = MUTABLE_SV(a0);
- } else {
- svp[0] = SvREFCNT_inc(psvp[0]);
- }
- for (j = 1; j <= fframe; ++j)
- svp[j] = SvREFCNT_inc(psvp[j]);
-
- AvARRAY(padlist)[i] = MUTABLE_SV(frame);
- }
- }
-