Access violation при отправке DM_SETTEXT кнопке

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Access violation при отправке DM_SETTEXT кнопке

Post by Smitis »

Вот такой макрос

Показывает диалог.
Если раскоментировать строчку с F.DIF_NOFOCUS+F.DIF_READONLY, отправка сообщения кнопке вызывает Access violation

Code: Select all

╔════════════════════════ Exception occurred ════════════════════════╗
║ Exception:   Access violation (read from 0x00000056)               ║
║ Address:     0x00435FB3                                            ║
║ Function:    OpenW                                                 ║
║ Module:      C:\Paul\FAR\Far3Test\Plugins\LuaMacro\LuaMacro.dll    ║
╟────────────────────────────────────────────────────────────────────╢
║                    { Unload plugin } [ Debug ]                     ║
╚════════════════════════════════════════════════════════════════════╝
3625, 3626, с одним плагином LuaMacro
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Access violation при отправке DM_SETTEXT кнопке

Post by Shmuel »

Упрощаем, падение остаётся.
  1. local F = far.Flags
  2.  
  3. local items = {
  4.  
  5.   {F.DI_DOUBLEBOX,3, 1,68,12, 0,0,0,0,"V2"},
  6.  
  7.   {F.DI_EDIT,    16, 5,66, 5, 0,0,0,0,"edit"},
  8.  
  9.   {F.DI_BUTTON,   0,11, 0, 0, 0,0,0,F.DIF_DEFAULTBUTTON+F.DIF_CENTERGROUP,"OK"},
  10.  
  11. }
  12.  
  13. local hdlg = far.DialogInit("",-1,-1,72,14,nil,items,nil,nil)
  14.  
  15. far.SendDlgMessage(hdlg,F.DM_SETTEXT,3,"Create")
  16.  
  17. far.DialogRun(hdlg)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by DrKnS »

Я не знаю как у вас там в луа, но вообще-то второй параметр у DM_SETTEXT - структура.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by Smitis »

DrKnS wrote:Я не знаю как у вас там в луа, но вообще-то второй параметр у DM_SETTEXT - структура.
В С++ да. Но в писании про Lua сказано string. И со string работает. Но, оказалось, не всегда.
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by Shmuel »

DrKnS wrote:Я не знаю как у вас там в луа, но вообще-то второй параметр у DM_SETTEXT - структура.
См. plugins\luamacro\luafar\service.c, от строки 2974.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Access violation при отправке DM_SETTEXT кнопке

Post by Shmuel »

И, кстати, возвращает этот вызов не 6, а 10
  1. far.SendDlgMessage(hdlg,F.DM_SETTEXT,3,"Create")
возможно за счёт вот этого?
  1. if (Type==DI_BUTTON && ItemFlags&DIF_SETSHIELD)
  2.  
  3. {
  4.  
  5.     Items[I].strData=L"\x2580\x2584 "+Items[I].strData;
  6.  
  7. }
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by 2useven10 »

там следующий if () срабатывает -- "{ " + ... + " }"
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by Shmuel »

только хотел удалить сообщение, а ты уже тут как тут. :)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by DrKnS »

А не надо посылать сообщения до DialogRun().
Поле ввода - сложный объект, диалог еще не инициализирован, вот и падает.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by Smitis »

Так ведь DialogInit подразумевает, что диалог уже иницилизирован.
К тому же, почему посылка сообщений до DialogRun обычно работает.
А падает не при посылке сообщения полю ввода, а кнопке.
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Access violation при отправке DM_SETTEXT кнопке

Post by DrKnS »

Хотя да, действительно, баг.
3627.
Post Reply

Return to “Глюки и баги”