shithub: choc

Download patch

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);