= Сообщение: 2770 из 3581 ======================================== RU.GOLDED = От : Vitaliy Aksyonov 1:104/117 04 Oct 23 07:06:34 Кому : Semen Panevin 04 Oct 23 07:06:34 Тема : Re: Еще один крэш FGHI : area://RU.GOLDED?msgid=1:104/117+651d655e На : area://RU.GOLDED?msgid=2:5025/121+651d2607 = Кодировка сообщения определена как: CP866 ================================== Ответ: area://RU.GOLDED?msgid=2:5025/121+651d70e6 ============================================================================== Привет, Semen!
04 Oct 23 11:35, ты писал(а) мне:
VA>>> Там есть заезд по памяти в одном месте точно. В файле VA>>> goldlib\gall\gespell.cpp в функции void VA>>> CSpellLang::RecodeText(const char *srcText, std::string VA>>> &dstText, bool flag) найди строку char *dstbuffer = new VA>>> char[srcLen+1]; и сделай буффер побольше, например вот так char VA>>> *dstbuffer = new char[srcLen * 4 + 1]; SP> Видимо после фикса таблицы перекодировки я наступил именно на это :)
SP> Сразу после создания сообщения-ответа со включенным спеллчекером SP> теперь упало.
Такое я пару раз ловил, но не понял, в чем причина. С однобайтовой кодировкой таких проблем не было.
VA>> Это была адская подстава. :) Оказалось, что таблица перекодировки VA>> из koi8-r в uft-8 - это, на самом деле копия таблицы cp866 -> VA>> utf-8. SP> А я-то глупый искал таблицы перекодировки в utf8 по utf и utf8 но не SP> по u8 и думал что их у меня нет :)
Хуже когда они есть, но работают неправильно. Я убил несколько часов, пока не понял, в чем подстава. :)
VA>> завелась. Но все равно с такими словарями это мало практично, VA>> ведь эхотаг не умеет преобразовать назад из utf-8 в локальную VA>> кодировку. SP> Это типа чтобы suggestions заработали?
Они самые. Если подсказки не нужны, то мой патч с увеличением буфера решает проблему и можно использовать utf-8 словари. Я пока не отправляю его в мастер, т. к. делаю более полноценное решение, которое закроет еще ряд вопросов с потенциальными заездами по памяти.
VA>> Я все равно поправлю там заезды по памяти, но никому не VA>> рекомендую использовать словари в многобайтных кодировках. SP> Ну не перекодировать же после каждого обновления hunspell словари. В SP> поставке идут UTF-8, надо подружить с ними.
Я просто скопировал их в отдельный каталог и дело с концом. Зато у меня отлично работает проверка орфографии. Мало того, я нашел словарь на 300К+ слов, но для него нужен новый hunspell. Это сделаю тоже. :)
VA>>> А вообще, попробуй ради эксперимента преобразовать свои словари VA>>> в KOI8-R и попробуй с "родным" hunspell и с твоим патчем. 99%, VA>>> что взлетит. У меня точно работает. SP> Наверное да... Если заезд по памяти пофиксить. SP> Будет чучуть времени - попробую патчик наложить на gespell.cpp SP> временный по твоему совету и проверить.
Работает. Проверено. Так что накладывай и пользуйся. Скоро будет более полноценный патч.
SP>>>> Понять бы, почему логи не пишутся... VA>>> Логи у меня пишутся. SP> Ну вот у меня нет :) Пустота, чёрт побери :)
Очень странно. Значит, что-то в конфиге не так. Тут я тебе кроме как вдумчиво покурить конфиги, а лучше отладчиком посмотреть в том месте, где он пытается (или не пытается) открыть лог.
VA>>> Хуже всего то, что некоторый код весело пишет в stdout/stderr и VA>>> портит картинку. SP> Ммм, в "штатном" режиме работы я такого не наблюдал.
В штатном конечно нет. Но как только вылазит ошибка какая-то - портит экран. Я ведь как раз повторяю какие-то ошибочные сценарии.
SP> Там другая проблема есть. Если при старте есть ошибки какие-то, SP> которые льются в stderr/stdout, то их невозможно прочитать, т.к. SP> где-то инициализируется ncurses и фсё, консоль больше не консолит. SP> Единственный способ - запускать с перенаправлением вывода в файл, но SP> тогда втуда же и ncurses уходит, если не только stderr но и stdout SP> перенаправить :)
Факт. И у меня есть идея, как это поправить. Чтобы хотя бы справку нормально выдавал.
VA>>> ЗЫ. Вот и нашел себе следущую задачу. :) Переделать XlatStr, VA>>> чтобы не было заездов по памяти. Как минимум - передавать размер VA>>> выходного буфера. VA>> Вот займусь этим пока. SP> Эх, я уже тоже почти совсем увлёкся и почти полез ковырять код SP> голдеда... Сложно это, когда C/C++ знаешь довольно поверхностно :) SP> Особенно в плане работы с разными разновидностями строк и прочими SP> юникодами...
Плюсы, особенно современные - не самый простой язык. А ты на чем пишешь?
Best regards, Vitaliy Aksyonov.
... Дайте мне исходники вселенной и хороший дебаггер! --- GoldED+/LNX 1.1.5-b20230920 * Origin: Aurora, Colorado (1:104/117)