From b2ebe5adfdef0866e70a6526982afd7fe7b52642 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 8 Aug 2026 17:58:30 +0500 Subject: [PATCH] engine: common: mod_bmodel: fix crash on Quake sky textures, pass real miptex data to Mod_InitSkyClouds instead of the on-stack header copy Fixes: ef5295c5a ("engine: workaround the misalignment issue when reading textures in BSP") --- engine/common/mod_bmodel.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/common/mod_bmodel.c b/engine/common/mod_bmodel.c index d33c20d5..20beb02d 100644 --- a/engine/common/mod_bmodel.c +++ b/engine/common/mod_bmodel.c @@ -2620,7 +2620,7 @@ static qboolean Mod_SearchForTextureReplacement( char *out, size_t size, const c return false; } -static void Mod_InitSkyClouds( model_t *mod, const mip_t *mt, texture_t *tx, qboolean custom_palette ) +static void Mod_InitSkyClouds( model_t *mod, const mip_t *mt, const byte *mtdata, texture_t *tx, qboolean custom_palette ) { #if !XASH_DEDICATED rgbdata_t r_temp, *r_sky; @@ -2679,7 +2679,7 @@ static void Mod_InitSkyClouds( model_t *mod, const mip_t *mt, texture_t *tx, qbo size += sizeof( short ) + 768; Image_SetForceFlags( IL_HOST_ENDIAN ); - r_sky = FS_LoadImage( texname, (byte *)mt, size ); + r_sky = FS_LoadImage( texname, mtdata, size ); } else { @@ -2795,7 +2795,7 @@ static void Mod_LoadTextureData( model_t *mod, dbspmodel_t *bmod, int textureInd // check for multi-layered sky texture (quake1 specific) if( bmod->isworld && Q_strncmp( mipTex.name, "sky", 3 ) == 0 && ( mipTex.width / mipTex.height ) == 2 ) { - Mod_InitSkyClouds( mod, &mipTex, texture, usesCustomPalette ); // load quake sky + Mod_InitSkyClouds( mod, &mipTex, mipRaw, texture, usesCustomPalette ); // load quake sky return; }