From 80eacd13f9d4e7111893de511d0b5ecd5402ee74 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 24 Oct 2008 17:28:37 +0000 Subject: Fix Heretic/Hexen implementations of P_LoadBlockmap to not modify the lump. Subversion-branch: /branches/raven-branch Subversion-revision: 1362 --- src/hexen/p_setup.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/hexen/p_setup.c') diff --git a/src/hexen/p_setup.c b/src/hexen/p_setup.c index 695c262e..653080e2 100644 --- a/src/hexen/p_setup.c +++ b/src/hexen/p_setup.c @@ -533,10 +533,18 @@ void P_LoadSideDefs(int lump) void P_LoadBlockMap(int lump) { int i, count; + int lumplen; - blockmaplump = W_CacheLumpNum(lump, PU_LEVEL); + lumplen = W_LumpLength(lump); + + blockmaplump = Z_Malloc(lumplen, PU_LEVEL, NULL); + W_ReadLump(lump, blockmaplump); blockmap = blockmaplump + 4; - count = W_LumpLength(lump) / 2; + + // Swap all short integers to native byte ordering: + + count = lumplen / 2; + for (i = 0; i < count; i++) blockmaplump[i] = SHORT(blockmaplump[i]); @@ -545,7 +553,8 @@ void P_LoadBlockMap(int lump) bmapwidth = blockmaplump[2]; bmapheight = blockmaplump[3]; -// clear out mobj chains + // clear out mobj chains + count = sizeof(*blocklinks) * bmapwidth * bmapheight; blocklinks = Z_Malloc(count, PU_LEVEL, 0); memset(blocklinks, 0, count); -- cgit v1.2.3