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.302 by root, Wed Nov 19 04:48:24 2008 UTC vs.
Revision 1.303 by root, Wed Nov 19 05:52:42 2008 UTC

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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines