Metin2 CreateItem Fix - Prevenire Ghost Items in item_manager.cpp
Acest fix corecteaza ordinea verificarilor din functia CreateItem din Metin2. In codul original, item-ul primeste VID si este inregistrat in m_VIDMap si m_map_pkItemByID inainte ca rezultatul functiei SetCount sa fie verificat.
Daca SetCount ar returna false intr-un caz nou adaugat ulterior, item-ul ar putea ramane inregistrat in memorie fara sa fie salvat sau eliberat corect.
- verifica SetCount inainte de inregistrarea item-ului;
- previne aparitia unor ghost items;
- evita obiecte ramase permanent in m_VIDMap;
- evita obiecte ramase in m_map_pkItemByID;
- face CreateItem mai sigur pentru eventuale modificari viitoare ale functiei SetCount.
Modificarea este una preventiva. In comportamentul actual, cazul principal in care SetCount returneaza false isi distruge deja item-ul, dar este recomandat sa testezi modificarea pe propria sursa daca ai modificat functia SetCount.
*Link download / Code:
Deschide item_manager.cpp si cauta:
Code:
item->SetVID(++m_dwVIDCount);
if (bSkipSave == false)
m_VIDMap.emplace(item->GetVID(), item);
if (item->GetID() != 0 && bSkipSave == false)
m_map_pkItemByID.emplace(item->GetID(), item);
if (!item->SetCount(count))
return NULL;Inlocuieste cu:


la acest mesaj și conținutul se va afișa automat.
