From 5d79cfd3031caea37216573a9d369f0c53db23b5 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers <coelckers@zdoom.fake> Date: Sun, 9 Jan 2011 11:01:04 +0000 Subject: [PATCH] - fixed: The internal blockmap builder still used 16 bit WORDs to reference linedefs so it failed on USMF maps which exceed this value. SVN r3092 (trunk) --- src/p_setup.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/p_setup.cpp b/src/p_setup.cpp index a62f5b5fc..20297ac8b 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -2483,10 +2483,10 @@ void P_LoadSideDefs2 (MapData * map) // as possible from its ZDBSP incarnation. // -static unsigned int BlockHash (TArray<WORD> *block) +static unsigned int BlockHash (TArray<int> *block) { int hash = 0; - WORD *ar = &(*block)[0]; + int *ar = &(*block)[0]; for (size_t i = 0; i < block->Size(); ++i) { hash = hash * 12235 + ar[i]; @@ -2494,7 +2494,7 @@ static unsigned int BlockHash (TArray<WORD> *block) return hash & 0x7fffffff; } -static bool BlockCompare (TArray<WORD> *block1, TArray<WORD> *block2) +static bool BlockCompare (TArray<int> *block1, TArray<int> *block2) { size_t size = block1->Size(); @@ -2506,8 +2506,8 @@ static bool BlockCompare (TArray<WORD> *block1, TArray<WORD> *block2) { return true; } - WORD *ar1 = &(*block1)[0]; - WORD *ar2 = &(*block2)[0]; + int *ar1 = &(*block1)[0]; + int *ar2 = &(*block2)[0]; for (size_t i = 0; i < size; ++i) { if (ar1[i] != ar2[i]) @@ -2518,20 +2518,20 @@ static bool BlockCompare (TArray<WORD> *block1, TArray<WORD> *block2) return true; } -static void CreatePackedBlockmap (TArray<int> &BlockMap, TArray<WORD> *blocks, int bmapwidth, int bmapheight) +static void CreatePackedBlockmap (TArray<int> &BlockMap, TArray<int> *blocks, int bmapwidth, int bmapheight) { int buckets[4096]; int *hashes, hashblock; - TArray<WORD> *block; + TArray<int> *block; int zero = 0; int terminator = -1; - WORD *array; + int *array; int i, hash; int hashed = 0, nothashed = 0; hashes = new int[bmapwidth * bmapheight]; - memset (hashes, 0xff, sizeof(WORD)*bmapwidth*bmapheight); + memset (hashes, 0xff, sizeof(int)*bmapwidth*bmapheight); memset (buckets, 0xff, sizeof(buckets)); for (i = 0; i < bmapwidth * bmapheight; ++i) @@ -2578,12 +2578,12 @@ static void CreatePackedBlockmap (TArray<int> &BlockMap, TArray<WORD> *blocks, i static void P_CreateBlockMap () { - TArray<WORD> *BlockLists, *block, *endblock; - WORD adder; + TArray<int> *BlockLists, *block, *endblock; + int adder; int bmapwidth, bmapheight; int minx, maxx, miny, maxy; int i; - WORD line; + int line; if (numvertexes <= 0) return; @@ -2615,7 +2615,7 @@ static void P_CreateBlockMap () adder = bmapwidth; BlockMap.Push (adder); adder = bmapheight; BlockMap.Push (adder); - BlockLists = new TArray<WORD>[bmapwidth * bmapheight]; + BlockLists = new TArray<int>[bmapwidth * bmapheight]; for (line = 0; line < numlines; ++line) {