Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.GOLDED
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 27 Jun 24 12:59:36, всего сообщений: 3580
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2936 из 3580 ======================================== RU.GOLDED =
От   : Nil A                            2:5015/46          25 Oct 23 05:37:48
Кому : Vitaliy Aksyonov                                    25 Oct 23 05:37:48
Тема : ASAN билд валится на сохранении сообщений
FGHI : area://RU.GOLDED?msgid=2:5015/46+653880a5
На   : area://RU.GOLDED?msgid=2:5015/46+65387900
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.GOLDED?msgid=1:104/117+6539136e
==============================================================================
Hello, Vitaliy!

Wednesday October 25 2023 05:06, from Nil A -> Vitaliy Aksyonov:

NA>>> Сейчас по w невозможно сохранить даже на терминале в 80 символов
NA>>> и простое сообщение без выделений, без URL.

VA>> Я это тоже поймал. Конкретно эта ошибка некритична, но переделать
VA>> все же надо. Когда дойдут руки. Я тут один, а вас вон сколько. :)

Когда читаешь такие вот функции, как TemplateToText(), то расхочевается чинить голдед.
Я не совсем понимаю что они там делают, а делают они там явно (по SOLID терминологии) не Single Responsibility Principle.
Но я могу предложить весьма безопасный, быстрый, и короткий фикс, даже не вникая что там происходит, просто одним условием вокруг обложить. И у меня всё работает.

diff --git a/golded3/getpls.cpp b/golded3/getpls.cpp
--- a/golded3/getpls.cpp
+++ b/golded3/getpls.cpp
@@ -348,21 +348,24 @@ int TemplateToText(int mode, GMsg* msg, GMsg* oldmsg, const char* tpl, int origa
     else
         *(msg->pseudofrom) = NUL;

-    // build @dpseudo
-    if(msg->to_me())
-        strcpy(oldmsg->pseudoto, msg->pseudofrom);
-    else if(msg->to_you())
-        strcpy(oldmsg->pseudoto, msg->pseudoto);
-    else
-        *(oldmsg->pseudoto) = NUL;
+    if (oldmsg != msg)
+    {
+        // build @dpseudo
+        if(msg->to_me())
+            strcpy(oldmsg->pseudoto, msg->pseudofrom);
+        else if(msg->to_you())
+            strcpy(oldmsg->pseudoto, msg->pseudoto);
+        else
+            *(oldmsg->pseudoto) = NUL;

-    // build @opseudo
-    if(msg->by_me())
-        strcpy(oldmsg->pseudofrom, msg->pseudofrom);
-    else if(msg->by_you())
-        strcpy(oldmsg->pseudofrom, msg->pseudoto);
-    else
-        *(oldmsg->pseudofrom) = NUL;
+        // build @opseudo
+        if(msg->by_me())
+            strcpy(oldmsg->pseudofrom, msg->pseudofrom);
+        else if(msg->by_you())
+            strcpy(oldmsg->pseudofrom, msg->pseudoto);
+        else
+            *(oldmsg->pseudofrom) = NUL;
+    }

     throw_release(msg->txt);


NA> Кстати, strcpy() на memmove() перебивать не надо, там ваще поентеры
NA> одинаковые.

NA> (gdb) bt
NA> #0  TemplateToText (mode=120, msg=0x623000000100,
NA> oldmsg=0x623000000100, tpl=0x62e00004315e "", origarea=3) at
NA> /home/fido/src/golded-plus/golded3/getpls.cpp:355 #1
NA> 0x00000000005a9b36 in SaveLines (mode=117, savefile=0x62e000045182
NA> "/home/fido/outfile/a", msg=0x623000000100, margin=79, clip=false) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:89 #2
NA> 0x00000000005adc3c in WriteMsgs (msg=0x623000000100) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:333 #3
NA> 0x00000000005ae9c5 in WriteMsg (msg=0x623000000100) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:409 #4
NA> 0x00000000007beda7 in Reader () at
NA> /home/fido/src/golded-plus/golded3/geread.cpp:963 #5
NA> 0x00000000006c7756 in main (argc=2, argv=0x7fffffffe0b8) at
NA> /home/fido/src/golded-plus/golded3/gemain.cpp:54 (gdb) p oldmsg $1 =
NA> (GMsg *) 0x623000000100 (gdb) p msg $2 = (GMsg *) 0x623000000100 (gdb)
NA> list 350 351         // build @dpseudo 352
NA> if(msg->to_me()) 353             strcpy(oldmsg->pseudoto,
NA> msg->pseudofrom); 354         else if(msg->to_you()) 355
NA> strcpy(oldmsg->pseudoto, msg->pseudoto); 356         else 357
NA> *(oldmsg->pseudoto) = NUL; 358 359         // build @opseudo

NA> Вот тут ваще noop должен быть.
NA> 355             strcpy(oldmsg->pseudoto, msg->pseudoto);

Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.032321 секунды