… | |
… | |
86 | static int |
86 | static int |
87 | poll_cb () |
87 | poll_cb () |
88 | { |
88 | { |
89 | dSP; |
89 | dSP; |
90 | int count = 0; |
90 | int count = 0; |
|
|
91 | int do_croak = 0; |
91 | aio_req req, prv; |
92 | aio_req req, prv; |
92 | |
93 | |
93 | pthread_mutex_lock (&reslock); |
94 | pthread_mutex_lock (&reslock); |
94 | |
95 | |
95 | { |
96 | { |
… | |
… | |
158 | PUTBACK; |
159 | PUTBACK; |
159 | call_sv (req->callback, G_VOID | G_EVAL); |
160 | call_sv (req->callback, G_VOID | G_EVAL); |
160 | SPAGAIN; |
161 | SPAGAIN; |
161 | } |
162 | } |
162 | |
163 | |
|
|
164 | do_croak = SvTRUE (ERRSV); |
|
|
165 | |
163 | LEAVE; |
166 | LEAVE; |
164 | |
167 | |
165 | if (req->callback) |
168 | if (req->callback) |
166 | SvREFCNT_dec (req->callback); |
169 | SvREFCNT_dec (req->callback); |
167 | |
170 | |
… | |
… | |
171 | |
174 | |
172 | prv = req; |
175 | prv = req; |
173 | req = req->next; |
176 | req = req->next; |
174 | Safefree (prv); |
177 | Safefree (prv); |
175 | |
178 | |
176 | /* TODO: croak on errors? */ |
179 | if (do_croak) |
|
|
180 | croak (0); |
177 | } |
181 | } |
178 | |
182 | |
179 | return count; |
183 | return count; |
180 | } |
184 | } |
181 | |
185 | |