diff --git a/src/doomstat.h b/src/doomstat.h index efce0e5d6..4f3a5ac58 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -36,6 +36,10 @@ extern "C" { // Selected map etc. // ============================= +#define ROUNDQUEUE_MAX 10 // sane max? maybe make dynamically allocated later +#define ROUNDQUEUE_CLEAR UINT16_MAX // lives in gametype field of packets +// The roundqueue itself is resident in g_game.h + // Selected by user. extern INT16 gamemap; extern char mapmusname[7]; diff --git a/src/g_game.h b/src/g_game.h index 6d050c75d..b34c1592a 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -54,9 +54,6 @@ typedef enum NEXTMAP_SPECIAL = NEXTMAP_INVALID } nextmapspecial_t; -#define ROUNDQUEUE_MAX 10 // sane max? maybe make dynamically allocated later -#define ROUNDQUEUE_CLEAR UINT16_MAX // lives in gametype field of packets - struct roundentry_t { UINT16 mapnum; // Map number at this position diff --git a/src/k_rank.cpp b/src/k_rank.cpp index 77c3095a7..8a2de947a 100644 --- a/src/k_rank.cpp +++ b/src/k_rank.cpp @@ -364,6 +364,12 @@ void K_InitGrandPrixRank(gpRank_t *rankData) --------------------------------------------------*/ void gpRank_t::Update(void) { + if (numLevels >= ROUNDQUEUE_MAX) + { + CONS_Alert(CONS_ERROR, "gpRank_t::Update(): Too many courses recorded in rank, discarding this round"); + return; + } + gpRank_level_t *const lvl = &levels[numLevels]; prisons += numtargets; diff --git a/src/k_rank.h b/src/k_rank.h index 17e84f37c..2548aacf0 100644 --- a/src/k_rank.h +++ b/src/k_rank.h @@ -62,7 +62,7 @@ struct gpRank_t boolean specialWon; UINT8 numLevels; - gpRank_level_t levels[CUPCACHE_PODIUM]; + gpRank_level_t levels[ROUNDQUEUE_MAX]; #ifdef __cplusplus void Init(void);