View Issue Details

IDProjectCategoryView StatusLast Update
0000978Far ManagerViewerpublic2009-10-20 21:09
Reportersnaury Assigned ToDrKnS  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version2.0 
Summary0000978: Какие-то неотображаемые символы "съедают" текст при просмотре в UTF-16
DescriptionРаньше (до второй версии) часто использовал Far для поиска юникод текста (и их оффсетов) в экзешниках. Однако вторая версия натыкается на какие-то символы, которые корёжат консоль и мешают перерисовывать экран на данной строке (я не совсем понял, но возможно это либо 0xFFFF либо 0x7FFF), при этом чаще всего это даже не сразу замечаешь (большинство [не]текста - всё равно вопросиками, а неперисованные куски становятся явно видны только при двойном нажатии на Ctrl+O). Смотрите скриншоты, может быть станет понятнее:

http://kitsu.ru/20090723-utf16-display-1.png
http://kitsu.ru/20090723-utf16-display-2.png

К сожалению натыкаюсь на такое практически постоянно, может быть можно отыскать который из юникод-символов так обрубает отрисовку строки и принудительно заменять его на вопросик?
Additional InformationТестировалось на билде 1053
TagsNo tags attached.
Build1163

Relationships

duplicate of 0000789 closedDrKnS После открытия Viewer под текстом "проглядывается" текст от панелей 

Activities

2009-07-23 14:58

 

20090723-utf16-display-1.png (27,036 bytes)   
20090723-utf16-display-1.png (27,036 bytes)   

2009-07-23 14:58

 

20090723-utf16-display-2.png (45,074 bytes)   
20090723-utf16-display-2.png (45,074 bytes)   

DrKnS

2009-07-23 16:31

administrator   bugnote:0003780

Все натыкаются.
Этот нехороший символ - 0xFFFF.

Функции семейства sprintf (в майкрософтовской реализации) на нём прерывают свою работу. И это как бы даже документированное поведение.

Что с этим делать - истреблять sprintf или заменить его какой-то своей реализацией - хз.

vskirdin

2009-07-24 09:00

administrator   bugnote:0003781

DrKnS, а версия, скомпиленная в gcc как себя ведет?

alexy

2009-07-24 10:13

administrator   bugnote:0003782

GCC линкует с msvcrt так что точно также должен.

DiRTy_GaRRy

2009-07-24 10:41

developer   bugnote:0003783

Хм... при сборке под VS2008SP1 что то я не вижу проблем. То ли всё ок, то ли я чего то не понимаю. Объясните на пальцах и со скриншотами как оно не должно выглядеть, а как должно.

DiRTy_GaRRy

2009-07-24 10:51

developer   bugnote:0003785

Всё... ступил... теперь вижу.

vskirdin

2009-07-24 12:27

administrator   bugnote:0003786

Вот так работает? :

Viewer::ShowHex()
{
...
    wcscat(OutStr,TextStr);

+ for(size_t I=0; I < wcslen (OutStr); ++I)
+ if(OutStr[I] == (wchar_t)0xFFFF)
+ OutStr[I]=L'?';
+
    if (StrLength(OutStr)>HexLeftPos)
      mprintf(L"%-*.*s",ObjWidth,ObjWidth,OutStr+(int)HexLeftPos);
...
}

DrKnS

2009-07-24 16:16

administrator   bugnote:0003789

> GCC линкует с msvcrt так что точно также должен.
Он может и должен, но почему-то там всё нормально.

> Вот так работает?
Валя, тут надо не костылём, а глобально править, т.к. проблема везде - в панелях, диалогах, редакторе и т. п.

vskirdin

2009-07-25 09:36

administrator   bugnote:0003790

Про костыли согласен, а это значит для M$ нужно переписывать эту чертову функцию.

DrKnS

2009-10-13 20:36

administrator   bugnote:0004248

1163

Issue History

Date Modified Username Field Change
2009-07-23 14:58 snaury New Issue
2009-07-23 14:58 snaury File Added: 20090723-utf16-display-1.png
2009-07-23 14:58 snaury File Added: 20090723-utf16-display-2.png
2009-07-23 16:31 DrKnS Note Added: 0003780
2009-07-24 09:00 vskirdin Note Added: 0003781
2009-07-24 10:13 alexy Note Added: 0003782
2009-07-24 10:41 DiRTy_GaRRy Note Added: 0003783
2009-07-24 10:51 DiRTy_GaRRy Note Added: 0003785
2009-07-24 12:27 vskirdin Note Added: 0003786
2009-07-24 16:16 DrKnS Note Added: 0003789
2009-07-25 09:36 vskirdin Note Added: 0003790
2009-10-13 20:30 DrKnS Relationship added duplicate of 0000789
2009-10-13 20:35 DrKnS Status new => assigned
2009-10-13 20:35 DrKnS Assigned To => DrKnS
2009-10-13 20:36 DrKnS Note Added: 0004248
2009-10-13 20:36 DrKnS Status assigned => feedback
2009-10-20 21:09 DrKnS Build => 1163
2009-10-20 21:09 DrKnS Status feedback => closed
2009-10-20 21:09 DrKnS Resolution open => fixed
2009-10-20 21:09 DrKnS Fixed in Version => 2.0