The routine is set up to find a certain attribute and change it to what you want. In the case of the circular reference, once the routine changed the attribute value it would not find it again on the return circle and would then continue on?
It would find it again. It looks for tag names, not attribute values. It most likely will be in a different block.
They way Jeff did it:
It looks through the block collection
When if finds a block that has attributes, it checks to see if any of the attributes match the list of tag strings.
If it does, then it puts in the new value.
If it finds and xref, it starts to search the block collection of that xref repeating the steps above.
Then my quesion was what started the discussion on circular references. If three (or more) drawings xref'ed each other, then it would stay in the loop forever until someone hit escape because it would seach the xref's that are found within xref's etc....
With Jeff's setup, it seems that that couldn't happen, but with mine it looks as if it could.
Hope that makes it a little clearer.?