… | |
… | |
1752 | |
1752 | |
1753 | SvRV_set (data, (SV *)av); |
1753 | SvRV_set (data, (SV *)av); |
1754 | api_ready (aTHX_ coro); |
1754 | api_ready (aTHX_ coro); |
1755 | SvREFCNT_dec (coro); |
1755 | SvREFCNT_dec (coro); |
1756 | |
1756 | |
|
|
1757 | /* better take a full copy of the arguments */ |
1757 | while (items--) |
1758 | while (items--) |
1758 | av_store (av, items, SvREFCNT_inc_NN (ST (items))); |
1759 | av_store (av, items, newSVsv (ST (items))); |
1759 | } |
1760 | } |
1760 | |
1761 | |
1761 | XSRETURN_EMPTY; |
1762 | XSRETURN_EMPTY; |
1762 | } |
1763 | } |
1763 | |
1764 | |
… | |
… | |
1778 | AV *av = (AV *)SvRV (data); |
1779 | AV *av = (AV *)SvRV (data); |
1779 | int i; |
1780 | int i; |
1780 | |
1781 | |
1781 | EXTEND (SP, AvFILLp (av) + 1); |
1782 | EXTEND (SP, AvFILLp (av) + 1); |
1782 | for (i = 0; i <= AvFILLp (av); ++i) |
1783 | for (i = 0; i <= AvFILLp (av); ++i) |
1783 | PUSHs (AvARRAY (av)[i]); |
1784 | PUSHs (sv_2mortal (AvARRAY (av)[i])); |
|
|
1785 | |
|
|
1786 | /* we have stolen the elements, so ste length to zero and free */ |
|
|
1787 | AvFILLp (av) = -1; |
|
|
1788 | av_undef (av); |
1784 | |
1789 | |
1785 | PUTBACK; |
1790 | PUTBACK; |
1786 | } |
1791 | } |
1787 | |
1792 | |
1788 | return 0; |
1793 | return 0; |
… | |
… | |
1828 | struct coro *coro = SvSTATE_hv (hv); |
1833 | struct coro *coro = SvSTATE_hv (hv); |
1829 | SV *data = newRV_inc ((SV *)hv); |
1834 | SV *data = newRV_inc ((SV *)hv); |
1830 | SV *cb = gensub (aTHX_ coro_rouse_callback, (void *)data); |
1835 | SV *cb = gensub (aTHX_ coro_rouse_callback, (void *)data); |
1831 | |
1836 | |
1832 | sv_magicext (SvRV (cb), data, CORO_MAGIC_type_rouse, 0, 0, 0); |
1837 | sv_magicext (SvRV (cb), data, CORO_MAGIC_type_rouse, 0, 0, 0); |
|
|
1838 | SvREFCNT_dec (data); /* magicext increases the refcount */ |
1833 | |
1839 | |
1834 | SvREFCNT_dec (coro->rouse_cb); |
1840 | SvREFCNT_dec (coro->rouse_cb); |
1835 | coro->rouse_cb = SvREFCNT_inc_NN (cb); |
1841 | coro->rouse_cb = SvREFCNT_inc_NN (cb); |
1836 | |
1842 | |
1837 | return cb; |
1843 | return cb; |