diff --git a/src/k_terrain.c b/src/k_terrain.c index c6558a22f..8a023ef5a 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -1625,9 +1625,9 @@ static boolean K_DoTERRAINLumpParse(size_t num, void (*parser)(size_t, char *, c Return:- false if any errors occured, otherwise true. --------------------------------------------------*/ -static boolean K_TERRAINLumpParser(UINT8 *data, size_t size) +static boolean K_TERRAINLumpParser(char *data, size_t size) { - char *tkn = M_GetToken((char *)data); + char *tkn = M_GetToken(data); UINT32 tknHash = 0; size_t pos = 0; size_t i; @@ -2022,6 +2022,7 @@ void K_InitTerrain(UINT16 wadNum) else { size_t size = W_LumpLengthPwad(wadNum, lumpNum); + char *datacopy; size_t nameLength = strlen(wadfiles[wadNum]->filename) + 1 + strlen(lump_p->fullname); // length of file name, '|', and lump name char *name = malloc(nameLength + 1); @@ -2032,7 +2033,16 @@ void K_InitTerrain(UINT16 wadNum) size = W_LumpLengthPwad(wadNum, lumpNum); CONS_Printf(M_GetText("Loading TERRAIN from %s\n"), name); - K_TERRAINLumpParser(data, size); + + datacopy = (char *)Z_Malloc((size+1)*sizeof(char),PU_STATIC,NULL); + memmove(datacopy,data,size); + datacopy[size] = '\0'; + + Z_Free(data); + + K_TERRAINLumpParser(datacopy, size); + + Z_Free(datacopy); free(name); }