Проблема с mf.acall

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Проблема с mf.acall

Post by John Doe »

Проблема возникает в случае когда функции error передаётся объект с метаметодом __tostring

Code: Select all

mf.acall(error, setmetatable({str="err"},{
  __tostring=function(self) return type(self) end
}))
Вывод: function.

Очевидно что должен быть table, и без mf.acall всё в порядке:

Code: Select all

error(setmetatable({str="err"},{
  __tostring=function(self) return type(self) end
}))
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Проблема с mf.acall

Post by Shmuel »

John Doe wrote: Fri 21 Nov, 2025 22:50 Проблема возникает в случае когда функции error передаётся объект с метаметодом __tostring
Ищите проблему в своём коде, который я, не полностью вникнув, замержил в луафар в своё время.
Вот например Lua Explorer показывает функцию error как builtin#19, а far.Show и far.Message как function: 0x0180e98d4128 (адрес може отличаться).
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Проблема с mf.acall

Post by Shmuel »

John Doe,
Исправлено, спасибо за репорт.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Проблема с mf.acall

Post by John Doe »

Shmuel wrote: Sat 22 Nov, 2025 18:24 Вот например Lua Explorer показывает функцию error как builtin#19, а far.Show и far.Message как function: 0x0180e98d4128 (адрес може отличаться).
Дело в том, что luaL_tolstring была взята из исходников Lua, а в чистом Lua адрес никак и нигде не обрабатывается.
Имена вида "builtin#" специфичны для LuaJIT-реализации.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Проблема с mf.acall

Post by Shmuel »

John Doe wrote: Sun 23 Nov, 2025 12:29 Дело в том, что luaL_tolstring была взята из исходников Lua, а в чистом Lua адрес никак и нигде не обрабатывается.
Причина-то понятна, но (мне) хотелось бы консистентности с _G.tostring хотя бы в far.Message и far.Show.
Поэтому сегодня эту консистентность и вернул обратно.
Last edited by Shmuel on Sun 23 Nov, 2025 12:40, edited 1 time in total.
Post Reply

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