diff --git a/docs/notework.rus b/docs/notework.rus index 3c8bc3f..d15b79d 100644 --- a/docs/notework.rus +++ b/docs/notework.rus @@ -13,8 +13,22 @@ _____________________________________________________________________________ Обозначения: "-" - исправление, "+" - новое, "!" - существенное изменение. _____________________________________________________________________________ -+ Дата последнего изменения исходных текстов автопатически сохраняется в - файлы sources.h и golded.spec. +- Исправлено много ошибок работы в памятью, приводивших к аварийному + завершению в 64-битных сборках GCC версий 4.*. Спасибо Антону Горлову + 2:5059/37 за багрепорты. + ++ Добавлен Gentoo ebuild, спасибо Семёну Паневину 2:5025/121@fidonet. + ++ При компиляции в строке запуска make можно указывать несколько параметров + чтобы выбрать вариант сборки. + +! Семён Паневин 2:5025/121@fidonet выделил весь код, связанный с библиотекой + ncurses в отдельную библиотеку. Теперь сообщения Goldnode и RDDT видны на + консоли юниксоподобных ОС. + ++ Дата последнего изменения исходных текстов автоматически сохраняется в + файлы sources.h и golded.spec. Дата из sources.h используется при + формировании строки версии для снапшотов Golded+. ! Теперь Golded+ выводит ошибки чтения конфига в stderr вместо stdout. Чтобы посмотреть только ошибки, пользователь юниксоподобной ОС может использовать diff --git a/docs/notework.txt b/docs/notework.txt index 1b66cb7..a0e86dc 100644 --- a/docs/notework.txt +++ b/docs/notework.txt @@ -13,8 +13,21 @@ ______________________________________________________________________ Legend: "-" - bugfix, "+" - new feature, "!" - important modification. ______________________________________________________________________ +- Many mistakes of work in the memory, leading to emergency end of + Golded+ in x64 GCC 4.x builds are corrected. Thank Anton Gorlov + 2:5059/37 for debugging and reporting about bugs. + ++ Gentoo ebuild is added. Thank for Semen Panevin, 2:5025/121@fidonet. + ++ You may run make with several parameters to specify variant of build. + +! Semen Panevin, 2:5025/121@fidonet has extracted all code related + with library ncurses in separate library. Now messages of Goldnode + and RDDT are visible on the console of unix-like OS. + + Date of last change of sources automatically remains in a files - srcdate.h and golded.spec. + srcdate.h and golded.spec. Date from srcdate.h uses for forming + version string for Golded+ snapshot. ! Now Golded+ outputs errors of reading of a config in stderr instead stdout. To look only errors, the user unix-like OS can use a diff --git a/golded3/geutil.cpp b/golded3/geutil.cpp index bf9741e..6ae46f5 100644 --- a/golded3/geutil.cpp +++ b/golded3/geutil.cpp @@ -41,8 +41,9 @@ void update_statuslines() { char buf[200]; /* FIXME: it is need to use dinamic arrays in this fuction to prevent buffer overflow or screen garbage */ char * const buf_end = buf+199; static char old_status_line[200] = ""; - char * const old_status_line_end = old_status_line_end+199; + char * const old_status_line_end = old_status_line+199; static int called = NO; + const int WIDE= sizeof(buf)>MAXCOL? MAXCOL : sizeof(buf)-1; HandleGEvent(EVTT_REMOVEVOCBUF); @@ -81,13 +82,13 @@ void update_statuslines() { int help_len = strlen(help); int clk_len = strlen(clkinfo); - int len = MAXCOL-help_len-clk_len-2; + int len = WIDE-help_len-clk_len-2; snprintf(buf,sizeof(buf), "%c%s%-*.*s%s ", goldmark, help, len, len, information, clkinfo); char *begin = buf; char *obegin = old_status_line; - char *end = (sizeof(buf) > MAXCOL) ? buf + MAXCOL: buf_end; - char *oend = (sizeof(old_status_line) > MAXCOL) ? old_status_line + MAXCOL: old_status_line_end; + char *end = buf + WIDE; + char *oend = old_status_line + WIDE; while((*begin != NUL) and (*begin == *obegin) and (begin (help_len-1))) wwprintc(W_STAT, 0,help_len-1, C_STATW, sep); - if(((begin - buf) < (MAXCOL-clk_len)) and ((end - buf) > (MAXCOL-clk_len))) - wwprintc(W_STAT, 0,MAXCOL-clk_len, C_STATW, sep); + if(((begin - buf) < (WIDE-clk_len)) and ((end - buf) > (WIDE-clk_len))) + wwprintc(W_STAT, 0,WIDE-clk_len, C_STATW, sep); vposset(row, col); #ifdef GOLD_MOUSE if(gmou.Row() == MAXROW-1)