View Issue Details

IDProjectCategoryView StatusLast Update
0000693Far ManagerCommand Line/Executepublic2009-01-11 20:35
Reporternfsr Assigned Toalexy  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version2.0 
Summary0000693: Не открываются htm/html файлы
Description1) Наводим курсор на любой htm / html файл, нажимаем Enter (или Shift+Enter), появляется "Ошибка выполнения C:\h.html"
Версия: far manager 2.0 alpha 1 (build 712)

Версия far 1.71 работает правильно (открывает оперу)

2) Если таким же образом открыть djvu файл внешним просмотрщиком и быстро его закрыть, то выдаёт ошибку: "Ошибка при пересылке команды приложению. Ошибка выполнения". Если закрывать не сразу, то всё нормально работает.
С djvu файлами ассоциирован WinDjView v0.5
Но этот момент уже не критичен...
Additional InformationFar manager 2.0 alpha 1 (build 712)
Windows XP SP2
TagsNo tags attached.
Build728

Relationships

related to 0000697 closedalexy Не срабатывают Win-ассоциации для файлов 

Activities

zg

2009-01-01 15:33

developer   bugnote:0002275

у меня ни один из пунктов не воспроизводится.

2009-01-01 19:09

 

registry.patch (876 bytes)   
Index: unicode_far/registry.cpp
===================================================================
--- unicode_far/registry.cpp	(revision 2407)
+++ unicode_far/registry.cpp	(working copy)
@@ -782,7 +782,8 @@
 
 	if ( nResult == ERROR_SUCCESS )
 	{
-		wchar_t *lpwszData = strData.GetBuffer (cbSize/sizeof(wchar_t)+1);
+		size_t symbolCount = cbSize / sizeof(wchar_t);
+		wchar_t *lpwszData = strData.GetBuffer (symbolCount);
 
 		nResult = RegQueryValueExW (
 				hKey,
@@ -793,7 +794,13 @@
 				&cbSize
 				);
 
-		strData.ReleaseBuffer (cbSize/sizeof(wchar_t));
+		size_t realSize = symbolCount;
+		if (symbolCount > 0 && lpwszData[symbolCount - 1] == L'\0') {
+			// ���� ������ null-terminated, �� ���������� ����� ������ ������������
+			realSize = -1;
+		}
+
+		strData.ReleaseBuffer (realSize);
 	}
 
 	if ( nResult != ERROR_SUCCESS )
registry.patch (876 bytes)   

nfsr

2009-01-01 19:13

reporter   bugnote:0002277

Last edited: 2009-01-01 19:15

Как воспроизвести:

В реестре:
  HKCR\txtfile\shell
задать в качестве значения по умолчанию пустую строку.
Затем в far-е попробовать запустить любой текстовый файл при помощи Enter. Получим ошибку (а должен был открыться блокнот).

Вроде как, нашёл баг. После исправлений (см. патч), у меня всё заработало.

Если в реестре в качестве default value - пустая строка, то длина возвращаемой строки в нашем случае становилась равной 1. Поэтому на строке
  strValue += strAction;
приплюсовывался лишний символ '\0' и дальнейшая конкатенация не имела эффекта, т.к. этот нулевой символ обрезал строку.

RegQueryValueEx в переменной lpcbData возвращает длину строки с учётом символа '\0', но этого символа может и не быть. Ровно как может быть 2 подряд идущих символа '\0' (в случае типа REG_MULTI_SZ)
Поэтому, думаю, следует проверять, если последний символ - null, то нужно подсчитывать длину строки при помощи wcslen (то есть передать в ReleaseBuffer параметр -1)

Сложновато объяснил, посмотрите лучше патч, думаю, будет понятней :)

P.S. Нет необходимости выделять лишний символ, достаточно написать strData.GetBuffer(symbolCount), т.к. в cbSize содержится количество байт с учётом символа '\0', если он есть...

alexy

2009-01-11 19:59

administrator   bugnote:0002302

728

Issue History

Date Modified Username Field Change
2009-01-01 14:22 nfsr New Issue
2009-01-01 14:22 nfsr Status new => assigned
2009-01-01 14:22 nfsr Assigned To => alexy
2009-01-01 15:33 zg Note Added: 0002275
2009-01-01 19:09 nfsr File Added: registry.patch
2009-01-01 19:13 nfsr Note Added: 0002277
2009-01-01 19:15 nfsr Note Edited: 0002277
2009-01-11 19:53 alexy Relationship added has duplicate 0000697
2009-01-11 19:59 alexy Note Added: 0002302
2009-01-11 19:59 alexy Status assigned => feedback
2009-01-11 20:26 nfsr Status feedback => resolved
2009-01-11 20:26 nfsr Resolution open => fixed
2009-01-11 20:35 alexy Build => 728
2009-01-11 20:35 alexy Status resolved => closed
2009-01-11 20:35 alexy Fixed in Version => 2.0
2009-01-11 20:55 alexy Relationship deleted has duplicate 0000697
2009-01-11 20:56 alexy Relationship added related to 0000697