Modified the "dereference" behavior so that it does not produce

warnings when rereferencing a layout file as intended.
This commit is contained in:
Tim Edwards 2022-11-22 11:05:55 -05:00
parent 71dffb2fd2
commit 01f2ce37b8
2 changed files with 31 additions and 11 deletions

View File

@ -1 +1 @@
8.3.345
8.3.346

View File

@ -1208,7 +1208,7 @@ DBCellRead(cellDef, name, ignoreTech, dereference, errptr)
if (cellDef->cd_flags & CDAVAILABLE)
result = TRUE;
else if ((f = dbReadOpen(cellDef, name, TRUE, errptr)) == NULL)
else if ((f = dbReadOpen(cellDef, name, TRUE, dereference, errptr)) == NULL)
result = FALSE;
else
@ -1259,18 +1259,21 @@ DBCellRead(cellDef, name, ignoreTech, dereference, errptr)
*/
FILETYPE
dbReadOpen(cellDef, name, setFileName, errptr)
dbReadOpen(cellDef, name, setFileName, dereference, errptr)
CellDef *cellDef; /* Def being read */
char *name; /* Name if specified, or NULL */
bool setFileName; /* If TRUE then cellDef->cd_file should be updated
* to point to the name of the file from which the
* cell was loaded.
*/
bool dereference; /* If dereferencing, try search paths first, and
* only if that fails, try the value in cd_file.
*/
int *errptr; /* Pointer to int to hold error value */
{
FILETYPE f = NULL;
int fd;
char *filename, *realname;
char *filename, *realname, *savename;
bool is_locked;
#ifdef FILE_LOCKS
@ -1309,7 +1312,9 @@ dbReadOpen(cellDef, name, setFileName, errptr)
else
*pptr = '\0';
f = PaLockZOpen(cellDef->cd_file, "r", DBSuffix, ".",
/* If dereferencing, then use search paths first */
if (!dereference)
f = PaLockZOpen(cellDef->cd_file, "r", DBSuffix, ".",
(char *) NULL, &filename, &is_locked, &fd);
/* Fall back on the original method of using search paths. */
@ -1329,7 +1334,8 @@ dbReadOpen(cellDef, name, setFileName, errptr)
if (pptr != NULL) *pptr = '.';
if (DBVerbose)
TxError("Warning: Parent cell lists instance of \"%s\" at "
if (!dereference)
TxError("Warning: Parent cell lists instance of \"%s\" at "
"bad file path %s.\n",
cellDef->cd_name, cellDef->cd_file);
@ -1338,10 +1344,24 @@ dbReadOpen(cellDef, name, setFileName, errptr)
StrDup(&cellDef->cd_file, filename);
if (DBVerbose)
{
TxError("The cell exists in the search paths at %s.\n", filename);
TxError("The discovered version will be used.\n");
}
if (!dereference)
{
TxError("The cell exists in the search paths at %s.\n",
filename);
TxError("The discovered version will be used.\n");
}
}
else if (dereference)
{
f = PaLockZOpen(cellDef->cd_file, "r", DBSuffix, ".",
(char *) NULL, &filename, &is_locked, &fd);
if (f != NULL)
if (DBVerbose)
TxError("Warning: Dereferenced cell \"%s\" not "
"found in search paths; using original "
"location %s.\n",
cellDef->cd_name,
cellDef->cd_file);
}
}
@ -1452,7 +1472,7 @@ DBOpenOnly(cellDef, name, setFileName, errptr)
*/
int *errptr; /* Pointer to int to hold error value */
{
dbReadOpen(cellDef, name, setFileName, errptr);
dbReadOpen(cellDef, name, setFileName, FALSE, errptr);
}
/*