diff --git a/src/r_textures.c b/src/r_textures.c index cabf59defc3faaf17e0dbdcbb1e58ed1fa6c07cd..ddb2afeb93a76835556a61e7b49683ff2f977cc0 100644 --- a/src/r_textures.c +++ b/src/r_textures.c @@ -505,7 +505,7 @@ UINT8 *R_GenerateTexture(size_t texnum) block = Z_Malloc(blocksize+1, PU_STATIC, &texturecache[texnum]); if (format == PICFMT_PATCH32) - memset(block, 0x00000000, blocksize+1); + memset(block, 0x00, blocksize+1); else memset(block, TRANSPARENTPIXEL, blocksize+1); // Transparency hack @@ -560,10 +560,18 @@ UINT8 *R_GenerateTexture(size_t texnum) x2 = x1 + width; if (x1 > texture->width || x2 < 0) + { + if (dealloc) + Z_Free(realpatch); continue; // patch not located within texture's x bounds, ignore + } if (patch->originy > texture->height || (patch->originy + height) < 0) + { + if (dealloc) + Z_Free(realpatch); continue; // patch not located within texture's y bounds, ignore + } // patch is actually inside the texture! // now check if texture is partly off-screen and adjust accordingly