With "Unicode True" in NSI script makensis.exe sporadically crashes. After investing some time in debugging i have found a possible reason:
ExeHeadStringList::getnum() seems to have an incorrect implementation for unicode strings:
... if (m_wide) { for(;;) { if ((pos+=cb) >= cbList) break; cb = StrLenUTF16(p+=cb) + 1, ++num; // should be: cb = (StrLenUTF16(p+=cb) + 1) * 2, ++num; } } ...
Wrong counting of "cb" is the reason for iterating over the buffer limit. This results in an access violation (sometimes).
May be related with issues #1227, #1215 and #1202.
Patch added: Patch #300