diff --git a/VERSION b/VERSION index 8ace87ff..3acdebd0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.220 +8.3.221 diff --git a/lef/defWrite.c b/lef/defWrite.c index e9dbae77..fcba26d2 100644 --- a/lef/defWrite.c +++ b/lef/defWrite.c @@ -695,6 +695,9 @@ defnodeVisit(node, res, cap, defdata) TTMaskZero(&tmask); TTMaskSetMask(&tmask, &DBConnectTbl[magictype]); + /* Avoid attempting to extract an implicit substrate into DEF */ + if (node->efnode_type == TT_SPACE) return 0; + DBSrConnect(def, &node->efnode_loc, &tmask, DBConnectTbl, &TiPlaneRect, defNetGeometryFunc, (ClientData)defdata); diff --git a/select/selEnum.c b/select/selEnum.c index 7f0529b7..05c31a16 100644 --- a/select/selEnum.c +++ b/select/selEnum.c @@ -149,6 +149,9 @@ SelEnumPaint(layers, editOnly, foundNonEdit, func, clientData) arg.sea_rectList = NULL; if (foundNonEdit != NULL) *foundNonEdit = FALSE; + /* EditCellUse is referenced in selEnumPFunc1() and must be non-NULL */ + if (EditCellUse == NULL) return 1; + /* First, find all the paint in the selection that has the right * layers. Use the same procedure as "dbCellUniqueTileSrFunc()" * so that contacts are not double-counted. diff --git a/select/selOps.c b/select/selOps.c index e71ed7ce..1b7089ee 100644 --- a/select/selOps.c +++ b/select/selOps.c @@ -103,6 +103,11 @@ SelectDelete(msg, do_clear) extern int selDelPaintFunc(), selDelCellFunc(), selDelLabelFunc(); + if (EditCellUse == NULL) + { + TxError("The current cell is not editable.\n"); + return; + } (void) SelEnumPaint(&DBAllButSpaceAndDRCBits, TRUE, &nonEdit, selDelPaintFunc, (ClientData) NULL); if (nonEdit) @@ -964,6 +969,11 @@ SelectTransform(transform) * visible) coordinates. */ { + if (EditCellUse == NULL) + { + TxError("The current cell is not editable.\n"); + return; + } /* Copy from SelectDef to Select2Def, transforming along the way. */