View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001025 | Far Manager | Copy/Move | public | 2009-08-28 13:37 | 2009-09-01 08:46 |
Reporter | Victor Miasnikov | Assigned To | zg | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.0 | ||||
Fixed in Version | 2.0 | ||||
Summary | 0001025: FAR v2.0.1091 ( и v2.0.981) обрезает записи в descript.ion при F5 или F6 до 260 символов | ||||
Description | v2 обрезает записи в descript.ion при F5 или F6 до 260 char <=> FAR v2.0.1091 ( и v2.0.981) обрезает записи в descript.ion при F5 или F6 до 260 символов До: reatogo_autoDriver-BETA.zip Apr-09-05 100 autoDriver for disk and network drivers <Beta for testing>Download Automatically creates the driver plugins for disk controllers and network cards, not natively supported by XPE. НТТР://www.reatogo.de/BartPE/FEATURES/autoHelp_for_plugins.htm#plugins [НТТР://www.reatogo.de/Download/autoHelp/reatogo_autoDriver-BETA.zip]После: Display.cab WinPE-- Display is a small utility that works as a GUI for setres.exe. Display also supports the changing of wallpaper. НТТР://www.patrick-binnendijk.nl/index.php?c=pe НТТР://www.patrick-binnendijk.nl/files/pe/Display.htm [НТТР://www.patrick-binnendijk.nl/fil | ||||
Additional Information | По словам автора ( из скромности не хочет себя рекламировать) "не идеальный, но менее радикальный, чем правка внутри метода .Format"
Радикальный метод: "внутри метода .Format используется буфер длинной всего 512 символов", не стоит ли его в 3-100 раз увеличить? | ||||
Tags | No tags attached. | ||||
Build | 1100 | ||||
|
See http://forum.farmanager.com/viewforum.php?f=9 |
|
> Радикальный метод: "внутри метода .Format используется буфер длинной всего 512 символов", не стоит ли его в 3-100 раз увеличить? ткните пальцем. я там вижу исключительно динамический буфер. |
|
Sorry, сразу не доглядел -- судя по всему Zd предлагает свой вариант исправления проблемы: === --- dizlist.cpp (revision 3348) +++ dizlist.cpp (working copy) - strDizText.Format (L"%-*.*s %.*s", - OptDizStartPos,OptDizStartPos,(const wchar_t*)strQuotedName, - NM/*(sizeof(DizText)-OptDizStartPos-2)*/,&DizData[DizPos].DizText[TextPos]); //BUGBUG + strDizText.Format (L"%-*.*s %s", + OptDizStartPos,OptDizStartPos,(const wchar_t*)strQuotedName,&DizData[DizPos].DizText[TextPos]); //BUGBUG === IMHO, он тоже решит проблему 2009-08-28 15-16: Zg извините за все чем я, хотя бы потенциально, Вас обидел, я этого не хотел ни в малейшей степени |
|
очень смешно мне мой же патч постить. ps: 1093. |
|
Сегодня уже не успею организовать компиляцию из Src :-( => До понедельника! 2009-08-28 18-06 NightRoman - спасибо за проверку |
|
попробовал 1093 - уже гораздо лучше, спасибо большое. тем не менее, большой тестовый текст описания таки подрезался до 8000 с чем-то байт. может это и нормально (куда такие описания нафиг?), но... |
|
Ошибка не закрыта! Хотя уже просто minor, а не 100% "приводящая к потере данных" 8000 -- это все равно потолок. Эх, спишу на вечер пятницы Ж-): А кто-то говорил "динамически", "на весь объем RAM" |
|
> А кто-то говорил "динамически", "на весь объем RAM" в UnicodeString::Format он динамический. продолжать разговор имеет смысл после осознания вами этого факта. |
|
Товарищ VVG это вы что ли? А ну кыш. |
|
TO Alexy: Я -- В.В.М. TO ZG: То что в подпрограмме X он динамический я "осознал" Пошел качать новый build Скоро узнаем динамический ли он в месте Y и Z Подтверждаю NightRoman: v2.0 build 1098 обрезает до 8182 Пошел осваивать VS 2008 Еще не освоил, но вот что мне нашли:
Но сказали, что грубым образом увеличивать MAX_DIZ_LENGTH опасно: можно нарваться на stack overflow |
|
Не стоит ли: 1) закрыть даннный Issue со статусом crash 2) открыть новый со статусом minor про потолок 8192 ? Какие здесь традиции на этот счет? Оказалось, что так ведет себя не только v2.X : FAR v2.0.1098 ( и v1.75.2582, и v1.7.5.1634) обрезает записи в descript.ion при F5 или F6 до 8192 символов |
|
diz.patch (2,028 bytes)
Index: dizlist.cpp =================================================================== --- dizlist.cpp (revision 3412) +++ dizlist.cpp (working copy) @@ -50,8 +50,6 @@ static int _cdecl SortDizIndex(const void *el1,const void *el2); int _cdecl SortDizSearch(const void *key,const void *elem); -#define MAX_DIZ_LENGTH 8192 - static DizRecord *SearchDizData; DizList::DizList() @@ -120,28 +118,35 @@ FILE *DizFile; if ((DizFile=_wfopen(strDizFileName,L"rb"))!=NULL) { - string strDizText; - char DizText[MAX_DIZ_LENGTH]; //BUGBUG - //SaveScreen *SaveScr=NULL; - clock_t StartTime=clock(); + fseek(DizFile,0,SEEK_END); + int szDizText=ftell(DizFile); + if (szDizText>0) + { + string strDizText; + char *pDizText=new char[szDizText+1]; + //SaveScreen *SaveScr=NULL; + clock_t StartTime=clock(); + rewind(DizFile); - while (fgets(DizText,sizeof(DizText),DizFile)!=NULL) - { - if ((DizCount & 127)==0 && clock()-StartTime>1000) + while (fgets(pDizText,szDizText+1,DizFile)!=NULL) { - //if (SaveScr==NULL) + if ((DizCount & 127)==0 && clock()-StartTime>1000) { - //SaveScr=new SaveScreen; - SetCursorType(FALSE,0); - PR_ReadingMsg(); + //if (SaveScr==NULL) + { + //SaveScr=new SaveScreen; + SetCursorType(FALSE,0); + PR_ReadingMsg(); + } + if (CheckForEsc()) + break; } - if (CheckForEsc()) - break; + + strDizText.SetData (pDizText, CP_OEMCP); //BUGBUG + RemoveTrailingSpaces(strDizText); + AddRecord(strDizText); } - - strDizText.SetData (DizText, CP_OEMCP); //BUGBUG - RemoveTrailingSpaces(strDizText); - AddRecord(strDizText); + delete[] pDizText; } Modified=0; |
|
Продублировал патч с форума. |
|
1100 |
|
Приятно обрадован Большое спасибо! |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-08-28 13:37 | Victor Miasnikov | New Issue | |
2009-08-28 13:38 | Victor Miasnikov | Note Added: 0003972 | |
2009-08-28 13:41 | zg | Note Added: 0003973 | |
2009-08-28 13:42 | zg | Status | new => assigned |
2009-08-28 13:42 | zg | Assigned To | => zg |
2009-08-28 13:55 | Victor Miasnikov | Note Added: 0003974 | |
2009-08-28 13:56 | Victor Miasnikov | Note Edited: 0003974 | |
2009-08-28 14:13 | zg | Note Added: 0003975 | |
2009-08-28 14:18 | Victor Miasnikov | Note Edited: 0003974 | |
2009-08-28 14:18 | Victor Miasnikov | Note Edited: 0003974 | |
2009-08-28 15:57 | Victor Miasnikov | Note Added: 0003979 | |
2009-08-28 16:42 | NightRoman | Note Added: 0003983 | |
2009-08-28 17:03 | Victor Miasnikov | Note Added: 0003984 | |
2009-08-28 17:05 | Victor Miasnikov | Note Edited: 0003979 | |
2009-08-28 19:11 | zg | Note Added: 0003985 | |
2009-08-28 19:15 | alexy | Note Added: 0003986 | |
2009-08-31 06:52 | Victor Miasnikov | Note Added: 0003993 | |
2009-08-31 06:52 | Victor Miasnikov | Note Edited: 0003993 | |
2009-08-31 07:38 | Victor Miasnikov | Note Edited: 0003993 | |
2009-08-31 09:14 | Victor Miasnikov | Note Edited: 0003993 | |
2009-08-31 09:15 | Victor Miasnikov | Note Edited: 0003993 | |
2009-08-31 10:03 | Victor Miasnikov | Note Added: 0003996 | |
2009-08-31 11:00 | Victor Miasnikov | Note Edited: 0003996 | |
2009-08-31 17:53 | igor_yudincev | File Added: diz.patch | |
2009-08-31 17:54 | igor_yudincev | Note Added: 0003999 | |
2009-08-31 20:39 | alexy | Note Added: 0004001 | |
2009-08-31 20:39 | alexy | Status | assigned => feedback |
2009-09-01 08:18 | Victor Miasnikov | Note Added: 0004002 | |
2009-09-01 08:18 | Victor Miasnikov | Status | feedback => resolved |
2009-09-01 08:18 | Victor Miasnikov | Resolution | open => fixed |
2009-09-01 08:46 | alexy | Build | => 1100 |
2009-09-01 08:46 | alexy | Status | resolved => closed |
2009-09-01 08:46 | alexy | Fixed in Version | => 2.0 |