--- EV/EV.xs 2007/12/20 09:32:19 1.94 +++ EV/EV.xs 2007/12/20 09:45:52 1.95 @@ -605,14 +605,22 @@ OUTPUT: RETVAL -ev_embed *embed (struct ev_loop *loop, SV *cb) +ev_embed *embed (struct ev_loop *loop, SV *cb = &PL_sv_undef) ALIAS: embed_ns = 1 CODE: +{ + if (!(ev_backend (loop) & ev_embeddable_backends ())) + croak ("passed loop is not embeddable via EV::embed,"); + RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv); RETVAL->fh = newSVsv (ST (0)); ev_embed_set (RETVAL, loop); + + if (!SvOK (cb)) ev_set_cb (RETVAL, 0); + if (!ix) START (embed, RETVAL); +} OUTPUT: RETVAL @@ -1113,7 +1121,7 @@ if (!loop) XSRETURN_UNDEF; - RETVAL = sv_bless (newRV_noinc (newSViv (PTR2IV (evapi.default_loop))), stash_loop); + RETVAL = sv_bless (newRV_noinc (newSViv (PTR2IV (loop))), stash_loop); } OUTPUT: RETVAL