Bugs / Найденные баги (1)
- Author
- Message
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
И в самом деле, ложная тревога. Прошу прощения.Не воспроизводится
Да, эти я знаю, но для нового пустого документа они не работают. Поэтому я цепляюсь к AKDN_EDIT_ONSTART.AKDN_OPENDOCUMENT_START, AKDN_OPENDOCUMENT_FINISH
В итоге сделал проверку по флагу, чтобы между START и FINISH имя не отображалось.
Да нет уж, еще не хватало - дедлока до окончания загрузки!Тут скорее баг что оно вернуло вообще что-то, а не дождалось полного открытия
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Когда докумен недозагружен и кто-то уже лезет за его содержимым - тоже не совсем приятно.
Я знаю зачем там оконный крутится, я найти не мог где именно он крутится.
Нашел цепочку
DoFileOpen -> OpenDocument -> FileStreamIn -> SendMessage(...,AEM_STREAMIN,...) -> AE_StreamIn -> AE_NotifyProgress -> SendMessageA(..., WM_NOTIFY,..) -> EditParentMessages(AEN_PROGRESS)
и вот в этой последней функцейке крутятся парочка циклов, один из которых обрабатывает лишние сообщения. По коду видно не должны, отладчиком я туда не ходил, так что статус ХЗ по прежнему.
Я знаю зачем там оконный крутится, я найти не мог где именно он крутится.
Нашел цепочку
DoFileOpen -> OpenDocument -> FileStreamIn -> SendMessage(...,AEM_STREAMIN,...) -> AE_StreamIn -> AE_NotifyProgress -> SendMessageA(..., WM_NOTIFY,..) -> EditParentMessages(AEN_PROGRESS)
и вот в этой последней функцейке крутятся парочка циклов, один из которых обрабатывает лишние сообщения. По коду видно не должны, отладчиком я туда не ходил, так что статус ХЗ по прежнему.
-
Offline
- Posts: 2
- Joined: Fri Dec 28, 2012 1:55 pm
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Поймал странное поведение при смешении кодировок.
Имеется файл с основным текстом в utf8 и строчкой в cp1251.
Это он открыт как cp1251:
При открытии как utf8 строчка cp1251 превращается в китайские иероглифы (конкретно эта - всего в один!). Диалог перекодировки сильно озадачивается при попытке перегнать эту строчку в нужную кодировку. Ни utf8 => cp1251, ни наоборот не дают нужного результата.
Вопрос1: как можно (и можно ли вообще) перегнать такую строку стредствами Акеля? Очевидный вариант "открыть как cp1251, вырезать, открыть как utf8, вставить" - очевиден.
Вопрос2: есть у меня подозрение, что конвертирование из utf8 тихо пропускает символы, не являющиеся utf8. Возможно, стоит добавить хотя бы предупреждение о том, что в файле встретились косячные символы
Имеется файл с основным текстом в utf8 и строчкой в cp1251.
Это он открыт как cp1251:
Code: Select all
їР±Р»Р°Р±Р»Р°
блабла
Вопрос1: как можно (и можно ли вообще) перегнать такую строку стредствами Акеля? Очевидный вариант "открыть как cp1251, вырезать, открыть как utf8, вставить" - очевиден.
Вопрос2: есть у меня подозрение, что конвертирование из utf8 тихо пропускает символы, не являющиеся utf8. Возможно, стоит добавить хотя бы предупреждение о том, что в файле встретились косячные символы
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Ну так оно и есть. utf8 сделан так что-бы спокйоно проигнорировать мусор и оставить уцелевшие символы.Вопрос2: есть у меня подозрение, что конвертирование из utf8 тихо пропускает символы, не являющиеся utf8. Возможно, стоит добавить хотя бы предупреждение о том, что в файле встретились косячные символы
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
> некой долей уверенности
Не с "некой долей" а 100% уверенности. Порча и выпадание 1 байта из текста портит только один utf8 символ.
> уж как реагировать на последний - на усмотрение программиста
Я не о той реакции. Я о реакции базового ридера utf8 - он никогда мусорые байты даже и не подумает смешать с настоящими и таким образом испортив весь текст.. Даже если выаадет один байт, то остальные символы не искажатся.
Не с "некой долей" а 100% уверенности. Порча и выпадание 1 байта из текста портит только один utf8 символ.
> уж как реагировать на последний - на усмотрение программиста
Я не о той реакции. Я о реакции базового ридера utf8 - он никогда мусорые байты даже и не подумает смешать с настоящими и таким образом испортив весь текст.. Даже если выаадет один байт, то остальные символы не искажатся.
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Я не о том. Может встретиться байт, который не является частью utf8 символа, но будет соответствовать требованиям кодировки (ну, тут вопрос скорее смысловой нагрузки, нежели фактического значения).Не с "некой долей" а 100% уверенности. Порча и выпадание 1 байта из текста портит только один utf8 символ.
Это все замечательно, но:Я о реакции базового ридера utf8 - он никогда мусорые байты даже и не подумает смешать с настоящими и таким образом испортив весь текст
1) Неплохо было бы знать, что в файле есть некорректные для utf8 данные
2) Что же в итоге делать в описанном случае?