ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.xs
(Generate patch)

Comparing IO-AIO/AIO.xs (file contents):
Revision 1.151 by root, Tue Jul 14 00:13:36 2009 UTC vs.
Revision 1.152 by root, Tue Jul 14 00:32:27 2009 UTC

533} 533}
534 534
535static SV * 535static SV *
536get_cb (SV *cb_sv) 536get_cb (SV *cb_sv)
537{ 537{
538 HV *st; 538 SvGETMAGIC (cb_sv);
539 GV *gvp; 539 return SvOK (cb_sv) ? s_get_cv_croak (cb_sv) : 0;
540 CV *cv;
541
542 if (!SvOK (cb_sv))
543 return 0;
544
545 cv = sv_2cv (cb_sv, &st, &gvp, 0);
546
547 if (!cv)
548 croak ("IO::AIO callback must be undef or a CODE reference");
549
550 return (SV *)cv;
551} 540}
552 541
553#define dREQ \ 542#define dREQ \
554 SV *cb_cv; \ 543 SV *cb_cv; \
555 aio_req req; \ 544 aio_req req; \
1221 if (GIMME_V != G_VOID) 1210 if (GIMME_V != G_VOID)
1222 XPUSHs (req->callback ? sv_2mortal (newRV_inc (req->callback)) : &PL_sv_undef); 1211 XPUSHs (req->callback ? sv_2mortal (newRV_inc (req->callback)) : &PL_sv_undef);
1223 1212
1224 if (items > 1) 1213 if (items > 1)
1225 { 1214 {
1226 SV *cb_cv = get_cb (callback); 1215 SV *cb_cv =get_cb (callback);
1227 1216
1228 SvREFCNT_dec (req->callback); 1217 SvREFCNT_dec (req->callback);
1229 req->callback = SvREFCNT_inc (cb_cv); 1218 req->callback = SvREFCNT_inc (cb_cv);
1230 } 1219 }
1231} 1220}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines