Код:
void logcustom(uint8 lvl, Color color, const char *str, ...)
{
char *charutf8 = str_convert_log(str, CP_UTF8, 866);
if(!str || loglevel < lvl)
return;
va_list ap;
_log_setcolor(true,color);
if(logtime)
printf("%s ", GetTimeString().c_str());
va_start(ap, charutf8);
vprintf(charutf8, ap);
va_end(ap);
_log_resetcolor(true);
printf("\n");
if(logfile)
{
fprintf(logfile, "%s", getDateString().c_str());
va_start(ap, charutf8);
vfprintf(logfile, charutf8, ap);
fprintf(logfile, "\n" );
va_end(ap);
fflush(logfile);
}
fflush(stdout);
delete[] charutf8;
какая строчка вызывает падение ? так чисто визуально вроде не видно где тут можно рухнуть
P.S. этот код может быть не корректен, так как конвертируется только строка формата, а все параметры остаются в изначальной кодировке и если utf8 строки передаются в качестве параметра, то тут то и наступят грабли