From cccd79ab0d2d6275a92eb004a0dac026916ca07d Mon Sep 17 00:00:00 2001 From: "R. Timothy Edwards" Date: Thu, 30 Oct 2025 12:37:00 -0400 Subject: [PATCH] One correction to the last commit---The additional check is not limited to the DRC_REVERSE case but must be done in both the forward and reverse cases. --- drc/DRCbasic.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/drc/DRCbasic.c b/drc/DRCbasic.c index 755cb08a..71c3860f 100644 --- a/drc/DRCbasic.c +++ b/drc/DRCbasic.c @@ -617,23 +617,20 @@ drcTile (tile, arg) /* Split side changes in the reverse case */ dinfo |= TT_SIDE; } + + /* The area to check is bounded between the diagonals of + * tile and errRect (which is the tile area, offset). + * Pass errRect and dinfo to areaNMCheck using the + * ClientData structure arg->dCD_rlist and arg->dCD_entries, + * which are not used by areaNMCheck. + */ + arg->dCD_rlist = (Rect *)mallocMagic(sizeof(Rect)); + *(arg->dCD_rlist) = errRect; + arg->dCD_entries = dinfo; + if (dinfo & TT_SIDE) + arg->dCD_entries &= ~TT_SIDE; else - { - /* The area to check is bounded between the diagonals of - * tile and errRect (which is the tile area, offset). - * Pass errRect and dinfo to areaNMCheck using the - * ClientData structure arg->dCD_rlist and arg->dCD_entries, - * which are not used by areaNMCheck. This is only needed - * for the DRC_REVERSE case. - */ - arg->dCD_rlist = (Rect *)mallocMagic(sizeof(Rect)); - *(arg->dCD_rlist) = errRect; - arg->dCD_entries = dinfo; - if (dinfo & TT_SIDE) - arg->dCD_entries &= ~TT_SIDE; - else - arg->dCD_entries |= TT_SIDE; - } + arg->dCD_entries |= TT_SIDE; /* errRect is the tile area offset by (deltax, deltay) */ errRect.r_xbot += deltax; @@ -645,12 +642,9 @@ drcTile (tile, arg) arg->dCD_celldef->cd_planes[cptr->drcc_plane], dinfo, &errRect, &tmpMask, areaNMCheck, (ClientData) arg); - if (cptr->drcc_flags & DRC_REVERSE) - { - arg->dCD_entries = 0; - freeMagic(arg->dCD_rlist); - arg->dCD_rlist = (Rect *)NULL; - } + arg->dCD_entries = 0; + freeMagic(arg->dCD_rlist); + arg->dCD_rlist = (Rect *)NULL; } DRCstatEdges++; }