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.401 by root, Mon May 16 22:08:24 2011 UTC vs.
Revision 1.402 by root, Sun May 22 13:07:23 2011 UTC

496 MAGIC *mg; 496 MAGIC *mg;
497 497
498 if (SvROK (coro)) 498 if (SvROK (coro))
499 coro = SvRV (coro); 499 coro = SvRV (coro);
500 500
501 mg = SvSTATEhv_p (coro); 501 mg = SvSTATEhv_p (aTHX_ coro);
502 if (!mg) 502 if (!mg)
503 croak ("Coro::State object required"); 503 croak ("Coro::State object required");
504 504
505 return (struct coro *)mg->mg_ptr; 505 return (struct coro *)mg->mg_ptr;
506} 506}
1727 SvREFCNT_dec (coro->startcv); 1727 SvREFCNT_dec (coro->startcv);
1728 SvREFCNT_dec (coro->args); 1728 SvREFCNT_dec (coro->args);
1729 SvREFCNT_dec (coro->swap_sv); 1729 SvREFCNT_dec (coro->swap_sv);
1730 SvREFCNT_dec (CORO_THROW); 1730 SvREFCNT_dec (CORO_THROW);
1731 1731
1732 coro_call_on_destroy (coro); 1732 coro_call_on_destroy (aTHX_ coro);
1733 1733
1734 /* more destruction mayhem in coro_state_free */ 1734 /* more destruction mayhem in coro_state_free */
1735} 1735}
1736 1736
1737static int 1737static int
1738coro_state_free (pTHX_ SV *sv, MAGIC *mg) 1738coro_state_free (pTHX_ SV *sv, MAGIC *mg)
1739{ 1739{
1740 struct coro *coro = (struct coro *)mg->mg_ptr; 1740 struct coro *coro = (struct coro *)mg->mg_ptr;
1741 mg->mg_ptr = 0; 1741 mg->mg_ptr = 0;
1742 1742
1743 coro_state_destroy (coro); 1743 coro_state_destroy (aTHX_ coro);
1744 SvREFCNT_dec (coro->on_destroy); 1744 SvREFCNT_dec (coro->on_destroy);
1745 SvREFCNT_dec (coro->status); 1745 SvREFCNT_dec (coro->status);
1746 1746
1747 Safefree (coro); 1747 Safefree (coro);
1748 1748
2054 PUTBACK; 2054 PUTBACK;
2055 } 2055 }
2056} 2056}
2057 2057
2058static void 2058static void
2059coro_push_on_destroy (aTHX_ struct coro *coro, SV *cb) 2059coro_push_on_destroy (pTHX_ struct coro *coro, SV *cb)
2060{ 2060{
2061 if (!coro->on_destroy) 2061 if (!coro->on_destroy)
2062 coro->on_destroy = newAV (); 2062 coro->on_destroy = newAV ();
2063 2063
2064 av_push (coro->on_destroy, cb); 2064 av_push (coro->on_destroy, cb);
2078 if (!coro->status) 2078 if (!coro->status)
2079 return 1; 2079 return 1;
2080 2080
2081 frame->destroy = 0; 2081 frame->destroy = 0;
2082 2082
2083 coro_push_av (coro->status, GIMME_V); 2083 coro_push_av (aTHX_ coro->status, GIMME_V);
2084 2084
2085 SvREFCNT_dec ((SV *)coro->hv); 2085 SvREFCNT_dec ((SV *)coro->hv);
2086 2086
2087 return 0; 2087 return 0;
2088} 2088}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines