… | |
… | |
258 | retval = 6; |
258 | retval = 6; |
259 | /* base name matched - not bad */ |
259 | /* base name matched - not bad */ |
260 | else if (strcasecmp (cp, op->name) == 0 && !count) |
260 | else if (strcasecmp (cp, op->name) == 0 && !count) |
261 | retval = 4; |
261 | retval = 4; |
262 | /* Check for partial custom name, but give a real low priority */ |
262 | /* Check for partial custom name, but give a real low priority */ |
263 | else if (op->custom_name && strstr (op->custom_name, cp)) |
263 | else if (op->custom_name.contains (cp)) |
264 | retval = 3; |
264 | retval = 3; |
265 | |
265 | |
266 | if (retval) |
266 | if (retval) |
267 | { |
267 | { |
268 | if (pl->type == PLAYER) |
268 | if (pl->type == PLAYER) |
… | |
… | |
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; ) |