… | |
… | |
230 | do_destroy (); |
230 | do_destroy (); |
231 | sever_self (); |
231 | sever_self (); |
232 | } |
232 | } |
233 | |
233 | |
234 | void |
234 | void |
|
|
235 | attachable::do_delete () |
|
|
236 | { |
|
|
237 | delete this; |
|
|
238 | } |
|
|
239 | |
|
|
240 | void |
235 | attachable::check_mortals () |
241 | attachable::check_mortals () |
236 | { |
242 | { |
237 | static int i = 0; |
243 | static int i = 0; |
238 | |
244 | |
239 | for (;;) |
245 | for (;;) |
… | |
… | |
252 | |
258 | |
253 | if (0) |
259 | if (0) |
254 | { |
260 | { |
255 | for (int j = 0; j < mortals.size (); ++j)//D |
261 | for (int j = 0; j < mortals.size (); ++j)//D |
256 | fprintf (stderr, "%d:%s %p ", j, &((object *)mortals[j])->name, mortals[j]);//D |
262 | fprintf (stderr, "%d:%s %p ", j, &((object *)mortals[j])->name, mortals[j]);//D |
|
|
263 | |
257 | fprintf (stderr, "\n");//D |
264 | fprintf (stderr, "\n");//D |
258 | } |
265 | } |
259 | } |
266 | } |
260 | } |
267 | } |
261 | |
268 | |
… | |
… | |
281 | } |
288 | } |
282 | else |
289 | else |
283 | { |
290 | { |
284 | mortals.erase (i); |
291 | mortals.erase (i); |
285 | obj->sever_self (); |
292 | obj->sever_self (); |
286 | delete obj; |
293 | obj->do_delete (); |
287 | } |
294 | } |
288 | } |
295 | } |
289 | } |
296 | } |
290 | |
297 | |
291 | void |
298 | void |