mextra follow up bit 2
<Someone> noticed the leftover zeromextra, this removes it. Using memset() on a possibly failed mextra allocation was inapprorpriate, so replace the newmextra() macro with a function. Prevent a crash in christen_monst() if mextra was not initialized.
This commit is contained in:
@@ -233,6 +233,7 @@ const char *name;
|
||||
return mtmp;
|
||||
}
|
||||
if (has_name(mtmp)) free((genericptr_t)MNAME(mtmp));
|
||||
if (!mtmp->mextra) mtmp->mextra = newmextra();
|
||||
|
||||
MNAME(mtmp) = (char *)alloc(lth);
|
||||
if (lth) Strcpy(MNAME(mtmp), name);
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#endif
|
||||
|
||||
STATIC_VAR NEARDATA struct monst zeromonst;
|
||||
STATIC_VAR NEARDATA struct mextra zeromextra;
|
||||
|
||||
/* this assumes that a human quest leader or nemesis is an archetype
|
||||
of the corresponding role; that isn't so for some roles (tourist
|
||||
@@ -853,6 +852,16 @@ int mndx;
|
||||
}
|
||||
}
|
||||
|
||||
struct mextra *
|
||||
newmextra()
|
||||
{
|
||||
struct mextra *mextra;
|
||||
mextra = (struct mextra *)alloc(sizeof(struct mextra));
|
||||
if (mextra)
|
||||
(void) memset((genericptr_t)mextra, 0, sizeof(struct mextra));
|
||||
return mextra;
|
||||
}
|
||||
|
||||
/*
|
||||
* called with [x,y] = coordinates;
|
||||
* [0,0] means anyplace
|
||||
|
||||
Reference in New Issue
Block a user