… | |
… | |
440 | return new_head; |
440 | return new_head; |
441 | } |
441 | } |
442 | |
442 | |
443 | fail: |
443 | fail: |
444 | for (auto (p, parts.begin ()); p != parts.end (); ++p) |
444 | for (auto (p, parts.begin ()); p != parts.end (); ++p) |
445 | (*p)->destroy (true); |
445 | (*p)->destroy (); |
446 | |
446 | |
447 | return 0; |
447 | return 0; |
448 | } |
448 | } |
449 | |
449 | |
450 | void |
450 | void |
… | |
… | |
510 | |
510 | |
511 | if (at->refcnt_cnt () > 1) // all arches have ONE refcount from their object |
511 | if (at->refcnt_cnt () > 1) // all arches have ONE refcount from their object |
512 | ++idx; |
512 | ++idx; |
513 | else |
513 | else |
514 | { |
514 | { |
515 | LOG (llevDebug, "garbage collect arch %s", at->debug_desc ()); |
515 | LOG (llevDebug, "garbage collect arch %s", &at->archname); |
516 | assert (at->arch == at); // verify that refcnt == 1 is truly valid |
516 | assert (at->arch == at); // verify that refcnt == 1 is truly valid |
517 | allarch.erase (idx); |
517 | allarch.erase (idx); |
518 | |
518 | |
519 | // break chain |
519 | // break chain |
520 | for (object *op = at->head_ (); op; ) |
520 | for (object *op = at->head_ (); op; ) |
… | |
… | |
552 | LOG (llevError | logBacktrace, "FATAL: creating singularity for '%s'.\n", name); |
552 | LOG (llevError | logBacktrace, "FATAL: creating singularity for '%s'.\n", name); |
553 | |
553 | |
554 | if (!strcmp (name, "bug")) |
554 | if (!strcmp (name, "bug")) |
555 | abort (); |
555 | abort (); |
556 | |
556 | |
557 | object *op = archetype::get ("bug"); |
557 | object *op = archetype::get (shstr_bug); |
558 | op->name = op->name_pl = format ("bug, please report (missing archetype %s)", name); |
558 | op->name = op->name_pl = format ("bug, please report (missing archetype %s)", name); |
559 | |
559 | |
560 | return op; |
560 | return op; |
561 | } |
561 | } |
562 | |
562 | |