From 5002ff9abe86e9573952e2dc45ec9229d0044a3b Mon Sep 17 00:00:00 2001 From: s1lentq Date: Sun, 14 Jan 2024 00:18:08 +0700 Subject: [PATCH] Prevent crash "Cache_UnlinkLRU: NULL link" on client-side if aiment with sprite model will be to render as a studio model --- rehlds/engine/sv_main.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/rehlds/engine/sv_main.cpp b/rehlds/engine/sv_main.cpp index 640cb2a..6d0387d 100644 --- a/rehlds/engine/sv_main.cpp +++ b/rehlds/engine/sv_main.cpp @@ -4698,11 +4698,25 @@ void SV_WriteEntitiesToClient(client_t *client, sizebuf_t *msg) auto &entityState = curPack->entities[i]; if (entityState.number > MAX_CLIENTS) { - if (sv_rehlds_attachedentities_playeranimationspeed_fix.string[0] == '1' - && entityState.movetype == MOVETYPE_FOLLOW - && 1 <= entityState.aiment && entityState.aiment <= MAX_CLIENTS) + if (entityState.movetype == MOVETYPE_FOLLOW && entityState.aiment > 0) { - attachedEntCount[entityState.aiment]++; + if (sv_rehlds_attachedentities_playeranimationspeed_fix.string[0] == '1' && + entityState.aiment <= MAX_CLIENTS) + { + attachedEntCount[entityState.aiment]++; + } + + // Prevent crash "Cache_UnlinkLRU: NULL link" on client-side + // if aiment with sprite model will be to render as a studio model + if (entityState.aiment < g_psv.num_edicts) + { + edict_t *ent = &g_psv.edicts[entityState.aiment]; + if ((ent->v.modelindex >= 0 && ent->v.modelindex < MAX_MODELS) + && g_psv.models[ent->v.modelindex]->type != mod_studio) + { + entityState.aiment = 0; + } + } } // Prevent spam "Non-sprite set to glow!" in console on client-side