Skip to content

Commit e6a85b9

Browse files
authored
Fix crash when requesting CJ clothing model (PR #4419)
Updated the condition for initializing blockOffsetToFileIdMap and blockOffsetToFileNameMap to also trigger when ms_ClothesFileDataMap is not empty, ensuring proper map setup when clothes data is present.
1 parent 76b02d2 commit e6a85b9

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

Client/game_sa/CRenderWareSA.ClothesReplacing.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,22 +219,26 @@ __declspec(noinline) bool _cdecl OnCStreaming_RequestModel_Mid(int flags, SImgGT
219219
if (ms_ReplacementClothesFileDataMap.empty() && ms_ClothesFileDataMap.empty())
220220
return false;
221221

222-
// Initialze lookup map if needed
223-
static std::map<std::uint32_t, int> blockOffsetToFileIdMap;
224-
static std::map<std::uint32_t, std::string> blockOffsetToFileNameMap;
225-
if (blockOffsetToFileIdMap.empty())
222+
static std::map<std::uint32_t, int> blockOffsetToFileIdMap;
223+
std::map<std::uint32_t, std::string> blockOffsetToFileNameMap;
224+
225+
if (blockOffsetToFileIdMap.empty() || ms_ClothesFileDataMap.size() > 0)
226226
{
227227
// Check is player.img dir has been loaded by GTA
228228
SPlayerImgItemArray* pItemArray = (SPlayerImgItemArray*)0x00BC12C0;
229-
std::uint32_t maxArraySize = 542 + ms_ClothesFileDataMap.size();
229+
std::uint32_t defaultArraySize = 542;
230+
std::uint32_t maxArraySize = defaultArraySize + ms_ClothesFileDataMap.size();
230231

231232
if (!pItemArray->pItems || pItemArray->uiArraySize != maxArraySize)
232233
return false;
233234

234235
for (std::uint32_t i = 0; i < pItemArray->uiArraySize; i++)
235236
{
236237
SPlayerImgItem* pImgItem = &pItemArray->pItems[i];
237-
MapSet(blockOffsetToFileIdMap, pImgItem->uiBlockOffset, i);
238+
239+
if (i < defaultArraySize)
240+
MapSet(blockOffsetToFileIdMap, pImgItem->uiBlockOffset, i);
241+
238242
MapSet(blockOffsetToFileNameMap, pImgItem->uiBlockOffset, pImgItem->szName);
239243
}
240244
}

0 commit comments

Comments
 (0)