Cache the max_edicts value in the progs struct.

Makes checks a little easier.
This commit is contained in:
Bill Currie 2012-07-09 15:06:42 +09:00
parent 0aac004c98
commit ce16750b04
3 changed files with 3 additions and 2 deletions

View file

@ -1592,6 +1592,7 @@ struct progs_s {
/// \name edicts
//@{
edict_t **edicts;
int max_edicts;
int *num_edicts;
int *reserved_edicts; ///< alloc will start at reserved_edicts+1
void (*unlink) (edict_t *ent);

View file

@ -85,7 +85,6 @@ ED_Alloc (progs_t *pr)
pr_int_t i;
edict_t *e;
int start = pr->reserved_edicts ? *pr->reserved_edicts : 0;
pr_int_t max_edicts = pr->pr_edictareasize / pr->pr_edict_size;
for (i = start + 1; i < *pr->num_edicts; i++) {
e = EDICT_NUM (pr, i);
@ -99,7 +98,7 @@ ED_Alloc (progs_t *pr)
}
}
if (i == max_edicts) {
if (i == pr->max_edicts) {
Sys_Printf ("WARNING: ED_Alloc: no free edicts\n");
i--; // step on whatever is the last edict
e = EDICT_NUM (pr, i);

View file

@ -184,6 +184,7 @@ PR_LoadProgsFile (progs_t *pr, QFile *file, int size, int max_edicts, int zone)
pr->pr_edict_size += sizeof (void*) - 1;
pr->pr_edict_size &= ~(sizeof (void*) - 1);
pr->pr_edictareasize = max_edicts * pr->pr_edict_size;
pr->max_edicts = max_edicts;
mem_size = pr->progs_size + pr->zone_size + pr->pr_edictareasize;
pr->progs = pr->allocate_progs_mem (pr, mem_size + 1);