From 22a230edc9f83b7890469d65a22c9c5c8fb06d86 Mon Sep 17 00:00:00 2001 From: "R. Timothy Edwards" Date: Sat, 29 Nov 2025 15:49:17 -0500 Subject: [PATCH] Found a mistake in the original edit for time stamps from two commits back, and fixed it. Also found that the version was changed between today's first two commits, which it should not have been, so dialed it back. --- VERSION | 2 +- database/DBtimestmp.c | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 3e80806b..8dc52b69 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.581 +8.3.580 diff --git a/database/DBtimestmp.c b/database/DBtimestmp.c index dc9c6c89..c6e44d70 100644 --- a/database/DBtimestmp.c +++ b/database/DBtimestmp.c @@ -247,18 +247,29 @@ dbStampFunc(cellDef) if (cellDef->cd_timestamp == timestamp) return 0; - /* - * Do not force a non-edit cell or a cell with a fixed timestamp - * to update its timestamp, as it cannot or should not. Just clear - * any flag suggesting that it needs a new timestamp. + /* Non-editable cells should not try to update timestamps, as the + * new timestamp cannot be written back to the file. This is + * basically a hack solution for the problem that running DRC on + * all cells causes all cells, including non-editable ones, to be + * marked as modified, even if there were no DRC changes in the + * cell. It is possible to get into trouble this way by modifying + * a cell and then marking it as non-editable */ - if (!(cellDef->cd_flags & (CDNOEDIT | CDFIXEDSTAMP))) + + if (cellDef->cd_flags & CDNOEDIT) { cellDef->cd_flags &= ~CDGETNEWSTAMP; return 0; } - cellDef->cd_timestamp = timestamp; + /* + * Do not force a non-edit cell or a cell with a fixed timestamp + * to update its timestamp, as it cannot or should not. Just clear + * any flag suggesting that it needs a new timestamp. + */ + if (!(cellDef->cd_flags & CDFIXEDSTAMP)) + cellDef->cd_timestamp = timestamp; + cellDef->cd_flags &= ~CDGETNEWSTAMP; // printf("Writing new timestamp %d for %s.\n", timestamp, cellDef->cd_name);