Corrected a crash condition report in issue #548 where somehow the

tech file setup results in a residue mask for a contact that includes
the contact type itself.  Therefore in ResMain.c, FindStartTile()
ends up calling itself with the same arguments, ensuring an infinite
loop.  It is easy enough to reject the recursive call if the residue
type equals the original type.  The question of how a contact residue
mask ended up with the contact type as part of it is not addressed by
this fix, and may not have any other consequences.
This commit is contained in:
R. Timothy Edwards 2026-08-02 12:56:23 -04:00
parent c81b995266
commit 18f3c5d429
1 changed files with 1 additions and 1 deletions

View File

@ -1717,7 +1717,7 @@ FindStartTile(resisdata, SourcePoint)
TileType rtype;
for (rtype = TT_TECHDEPBASE; rtype < DBNumUserLayers; rtype++)
if (TTMaskHasType(rmask, rtype))
if (TTMaskHasType(rmask, rtype) && (rtype != savtype))
{
resisdata->rg_ttype = rtype;
if ((tile = FindStartTile(resisdata, SourcePoint)) != NULL)