… | |
… | |
133 | * - name: The name we're searching for (ex: "writing pen"); |
133 | * - name: The name we're searching for (ex: "writing pen"); |
134 | * Return value: |
134 | * Return value: |
135 | * - a corresponding object if found; a singularity object if not found. |
135 | * - a corresponding object if found; a singularity object if not found. |
136 | * Note by MSW - it appears that it takes the full name and keeps |
136 | * Note by MSW - it appears that it takes the full name and keeps |
137 | * shortening it until it finds a match. I re-wrote this so that it |
137 | * shortening it until it finds a match. I re-wrote this so that it |
138 | * doesn't malloc it each time - not that this function is used much, |
138 | * doesn't allocate it each time - not that this function is used much, |
139 | * but it otherwise had a big memory leak. |
139 | * but it otherwise had a big memory leak. |
140 | */ |
140 | */ |
141 | object * |
141 | object * |
142 | get_archetype_by_object_name (const char *name) |
142 | get_archetype_by_object_name (const char *name) |
143 | { |
143 | { |
… | |
… | |
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->debug_desc ()); |
516 | assert (at->arch == at); // verify that refcnt == 1 is truely 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; ) |
521 | { |
521 | { |