ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro/State.xs
(Generate patch)

Comparing Coro/Coro/State.xs (file contents):
Revision 1.447 by root, Tue Oct 14 21:53:32 2014 UTC vs.
Revision 1.448 by root, Thu Jun 4 22:58:28 2015 UTC

42# define PadlistNAMES(pl) (*PadlistARRAY (pl)) 42# define PadlistNAMES(pl) (*PadlistARRAY (pl))
43# define PadARRAY AvARRAY 43# define PadARRAY AvARRAY
44# define PadMAX AvFILLp 44# define PadMAX AvFILLp
45# define newPADLIST(var) ((var) = newAV (), av_extend (var, 1)) 45# define newPADLIST(var) ((var) = newAV (), av_extend (var, 1))
46#endif 46#endif
47#ifndef PadnamelistREFCNT
48# define PadnamelistREFCNT(pnl) SvREFCNT (pnl)
49#endif
50#ifndef PadnamelistREFCNT_dec
51# define PadnamelistREFCNT_dec(pnl) SvREFCNT_dec (pnl)
52#endif
47 53
48/* 5.19.something has replaced SVt_BIND by SVt_INVLIST */ 54/* 5.19.something has replaced SVt_BIND by SVt_INVLIST */
49/* we just alias it to SVt_IV, as that is sufficient for swap_sv for now */ 55/* we just alias it to SVt_IV, as that is sufficient for swap_sv for now */
50#if PERL_VERSION_ATLEAST(5,19,0) 56#if PERL_VERSION_ATLEAST(5,19,0)
51# define SVt_BIND SVt_IV 57# define SVt_BIND SVt_IV
517ecb_inline PADLIST * 523ecb_inline PADLIST *
518coro_derive_padlist (pTHX_ CV *cv) 524coro_derive_padlist (pTHX_ CV *cv)
519{ 525{
520 PADLIST *padlist = CvPADLIST (cv); 526 PADLIST *padlist = CvPADLIST (cv);
521 PADLIST *newpadlist; 527 PADLIST *newpadlist;
528 PADNAMELIST *padnames;
522 PAD *newpad; 529 PAD *newpad;
523 PADOFFSET off = PadlistMAX (padlist) + 1; 530 PADOFFSET off = PadlistMAX (padlist) + 1;
524 531
525#if NEWPADAPI 532#if NEWPADAPI
526 533
553 AvREAL_off (newpadlist); 560 AvREAL_off (newpadlist);
554#endif 561#endif
555 562
556 /* Already extended to 2 elements by newPADLIST. */ 563 /* Already extended to 2 elements by newPADLIST. */
557 PadlistMAX (newpadlist) = 1; 564 PadlistMAX (newpadlist) = 1;
558 PadlistNAMES (newpadlist) = (PADNAMELIST *)SvREFCNT_inc_NN (PadlistNAMES (padlist)); 565
566 padnames = PadlistNAMES (padlist);
567 ++PadnamelistREFCNT (padnames);
568 PadlistNAMES (newpadlist) = padnames;
569
559 PadlistARRAY (newpadlist)[1] = newpad; 570 PadlistARRAY (newpadlist)[1] = newpad;
560 571
561 return newpadlist; 572 return newpadlist;
562} 573}
563 574
584 PadMAX (pad) = -1; 595 PadMAX (pad) = -1;
585 SvREFCNT_dec (pad); 596 SvREFCNT_dec (pad);
586 } 597 }
587 } 598 }
588 599
589 SvREFCNT_dec (PadlistNAMES (padlist)); 600 PadnamelistREFCNT_dec (PadlistNAMES (padlist));
590 601
591#if NEWPADAPI 602#if NEWPADAPI
592 Safefree (PadlistARRAY (padlist)); 603 Safefree (PadlistARRAY (padlist));
593 Safefree (padlist); 604 Safefree (padlist);
594#else 605#else

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines