Глюк в FSF.ConvertPath ?! Topic is solved
Глюк в FSF.ConvertPath ?!
В сборке 4242 наблюдается следующий эффект (чистая установка с дистрибутива под WinXP):
Предположим, текущая директория на диске С: в активной панели - C:\foo
а на диске D: (пассивная панель) - D:\bar
Нажимаем F5 на любом файле в активной панели и в открывшемся диалоге копирования пишем путь: D:something
Теперь жмем Enter и... получаем файл C:\foo\D нулевой длины !
При этом "copy C:\foo\something D:something" из командной строки отрабатывает нормально.
Эффект не зависит от состояния настройки "Use system copy routine".
Аналогичный эффект наблюдается в сборке 4173 под Win81, которую я использую для отладки плагинов.
Расследование показало, что FSF.ConvertPath(CPM_REAL, L"D:something", ...) возвращает L"C:\foo\D:something"
В стабильной сборке 4040 эффект воспроизвести не удалось.
Предположим, текущая директория на диске С: в активной панели - C:\foo
а на диске D: (пассивная панель) - D:\bar
Нажимаем F5 на любом файле в активной панели и в открывшемся диалоге копирования пишем путь: D:something
Теперь жмем Enter и... получаем файл C:\foo\D нулевой длины !
При этом "copy C:\foo\something D:something" из командной строки отрабатывает нормально.
Эффект не зависит от состояния настройки "Use system copy routine".
Аналогичный эффект наблюдается в сборке 4173 под Win81, которую я использую для отладки плагинов.
Расследование показало, что FSF.ConvertPath(CPM_REAL, L"D:something", ...) возвращает L"C:\foo\D:something"
В стабильной сборке 4040 эффект воспроизвести не удалось.
Глюк в FSF.ConvertPath ?!
Вот ёлки...
А как же теперь правильно путь к файлу получать, если плагин, скажем, вызывается из командной строки и пользователь задал параметр как относительный путь в виде D:something ?!
А как же теперь правильно путь к файлу получать, если плагин, скажем, вызывается из командной строки и пользователь задал параметр как относительный путь в виде D:something ?!
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Глюк в FSF.ConvertPath ?!
Поведение явно нежелательное.
Вот ещё пример: http://forum.farmanager.com/viewtopic.p ... 78#p127978
Вот ещё пример: http://forum.farmanager.com/viewtopic.p ... 78#p127978
Глюк в FSF.ConvertPath ?!
Ну, мягко говоря, да.John Doe wrote:Поведение явно нежелательное.
А с учетом того, что FSF.ConvertPath(CPM_REAL, L"D:.\something", ...) возвращает L"C:\foo\D:.\something"
вообще тянет на полноценный баг...
Глюк в FSF.ConvertPath ?!
Мне кажется, HaRT там очень правильную мысль высказал: если кому-то понадобится что-то в поток записать (что, наверное, бывает не очень часто), пусть укажет это явно: ".\D:something"John Doe wrote:Вот ещё пример: http://forum.farmanager.com/viewtopic.p ... 78#p127978
В общем, предложение такое: если задаваемый пользователем путь начинается с
Code: Select all
[A..Za..z]:
Глюк в FSF.ConvertPath ?!
Спасибо за оперативный ремонт
Меня, правда, продолжают терзать смутные сомнения по поводу вот этой строки из ParsePath:
Для path == L"c:" она, похоже, должна выдать TRUE, что в теории неправильно...
Но внешних проявлений этой неправильности я не нашел.
Меня, правда, продолжают терзать смутные сомнения по поводу вот этой строки из ParsePath:
Code: Select all
*Root = path.size() == MatchLength || (path.size() == (MatchLength + 1) && IsSlash(path[MatchLength]));
Но внешних проявлений этой неправильности я не нашел.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Глюк в FSF.ConvertPath ?!
Это нормально. Root используется для определения, допустимо ли отбросить в полученном пути последний слеш, а тут и отбрасывать нечего.stasf wrote:Для path == L"c:" она, похоже, должна выдать TRUE, что в теории неправильно...
stasf wrote:И еще, судя по всему, функция ExtractFileName из pathmix.cpp вернет пустую строку, если передать ей путь вида "c:path"
А, если не секрет, зачем всё это надо?
Это же такое легаси.
Глюк в FSF.ConvertPath ?!
Честно говоря, я не не разбирался зачем это надо - просто код посмотрел и на всякий случай поделился сомнениямиDrKnS wrote: А, если не секрет, зачем всё это надо?
Это же такое легаси.