… | |
… | |
38 | c = (struct ctx *)ctx; |
38 | c = (struct ctx *)ctx; |
39 | cb = c->cb; |
39 | cb = c->cb; |
40 | c->cb = 0; |
40 | c->cb = 0; |
41 | ev_unref (); |
41 | ev_unref (); |
42 | |
42 | |
|
|
43 | PUSHMARK (SP); |
|
|
44 | |
|
|
45 | XPUSHs (sv_2mortal (newSViv (a->status))); |
43 | free (a); |
46 | free (a); |
44 | |
47 | |
45 | PUSHMARK (SP); |
|
|
46 | printf ("call %s\n", SvPV_nolen(cb)); |
|
|
47 | PUTBACK; |
48 | PUTBACK; |
48 | call_sv (cb, G_VOID | G_DISCARD); |
49 | call_sv (cb, G_VOID | G_DISCARD | G_EVAL); |
49 | SPAGAIN; |
50 | SPAGAIN; |
50 | |
51 | |
51 | SvREFCNT_dec (cb); |
52 | SvREFCNT_dec (cb); |
52 | SvREFCNT_dec (c->self); |
53 | SvREFCNT_dec (c->self); |
53 | } |
54 | } |
… | |
… | |
249 | c->self = csv; |
250 | c->self = csv; |
250 | c->cb = newSVsv (cb); |
251 | c->cb = newSVsv (cb); |
251 | |
252 | |
252 | if (GIMME_V != G_VOID) |
253 | if (GIMME_V != G_VOID) |
253 | { |
254 | { |
254 | csv = sv_2mortal (newRV_noinc (csv)); |
255 | csv = sv_2mortal (newRV_inc (csv)); |
255 | sv_bless (csv, stash); |
256 | sv_bless (csv, stash); |
256 | XPUSHs (csv); |
257 | XPUSHs (csv); |
257 | } |
258 | } |
258 | } |
259 | } |
259 | } |
260 | } |