safe_oname (trunk only)
There were routines that were passed the object name as an argument. Before the oextra patch, ONAME() always returned a valid pointer to a location within the obj struct. The oextra patch worked around those cases by using a temporary variable that was either set to ONAME (if the obj passed the has_oname() test), or to "" (pointer to an empty string) if no name was present. Since that might be a common thing to do, provide the safe_oname() routine that you can use as a function parameter without having to worry about about whether ONAME(obj) is valid, and without the need for the temporary variable.
This commit is contained in:
@@ -68,16 +68,14 @@ boolean restore;
|
||||
/* artifact bookeeping needs to be done during
|
||||
restore; other fixups are done while saving */
|
||||
if (otmp->oartifact) {
|
||||
char *tmponame = "";
|
||||
if (has_oname(otmp)) tmponame = ONAME(otmp);
|
||||
if (exist_artifact(otmp->otyp, tmponame) ||
|
||||
if (exist_artifact(otmp->otyp, safe_oname(otmp)) ||
|
||||
is_quest_artifact(otmp)) {
|
||||
/* prevent duplicate--revert to ordinary obj */
|
||||
otmp->oartifact = 0;
|
||||
if (has_oname(otmp))
|
||||
free_oname(otmp);
|
||||
} else {
|
||||
artifact_exists(otmp, tmponame, TRUE);
|
||||
artifact_exists(otmp, safe_oname(otmp), TRUE);
|
||||
}
|
||||
}
|
||||
} else { /* saving */
|
||||
|
||||
Reference in New Issue
Block a user