--- IO-AIO/schmorp.h 2009/07/14 00:14:27 1.2 +++ IO-AIO/schmorp.h 2009/07/14 00:32:27 1.3 @@ -137,20 +137,20 @@ { HV *st; GV *gvp; - CV *cv = sv_2cv (cb_sv, &st, &gvp, 0); - return (SV *)cv; + SvGETMAGIC (cb_sv); + return SvOK (cb_sv) ? sv_2cv (cb_sv, &st, &gvp, 0) : 0; } static SV * s_get_cv_croak (SV *cb_sv) { - cb_sv = s_get_cv (cb_sv); + SV *cv = s_get_cv (cb_sv); - if (!cb_sv) + if (!cv) croak ("%s: callback must be a CODE reference or another callable object", SvPV_nolen (cb_sv)); - return cb_sv; + return cv; } /*****************************************************************************/