in the loot.filter:
if write "%AMED%ED" ,the source code "ItemDisplay.cpp#L1327" will dead loop.because %AMED% will replace to "AM" and "AM" + "ED" = "AMED" too,and will loop again to replace AMED to AMED
while (varString.find(replacements[n].key) != string::npos)
Edit to:
while (varString.length()==replacements[n].key.length()&&varString.find(replacements[n].key) != string::npos)
will fix this issues
the bug line is: https://github.com/Project-Diablo-2/BH/blob/515ae38ce1addfbe035328cfd2eb0a91a9696446/BH/Modules/Item/ItemDisplay.cpp#L1327
in the loot.filter: if write "%AMED%ED" ,the source code "ItemDisplay.cpp#L1327" will dead loop.because %AMED% will replace to "AM" and "AM" + "ED" = "AMED" too,and will loop again to replace AMED to AMED