ref: 80eacd13f9d4e7111893de511d0b5ecd5402ee74
parent: 8022c5cc09ecec5623449a2040672c1e331ac75e
author: Simon Howard <[email protected]>
date: Fri Oct 24 13:28:37 EDT 2008
Fix Heretic/Hexen implementations of P_LoadBlockmap to not modify the lump. Subversion-branch: /branches/raven-branch Subversion-revision: 1362
--- a/src/heretic/p_setup.c
+++ b/src/heretic/p_setup.c
@@ -419,10 +419,16 @@
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);
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]);
--- a/src/hexen/p_setup.c
+++ b/src/hexen/p_setup.c
@@ -533,10 +533,18 @@
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 @@
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);