Victor_VG
Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору LuaManager v6.0.1 by IgorZ от 30.06.2023 - к сожалению, ошибка format параметр #3 при запуске в строке 2603 возникает, и что интересно, устраняется удалением либо всей БД LuaMacro либо удалением из неё параметров LuaManager, в т.ч. и в минимальной копии - far + luamacro+ luamanager. Пока не могу понять где источник??? Сверка на двух машинах дала стеки, и вопросы вот к ентому месту кода: Код: if c=="O" and #modules>0 then -- модули, если есть items[#items+1] = {separator=true,text=L.Modules..pf} -- подзаголовок local frm = "%-"..(MNameW+1)..(S.MaxFileWidth~=0 and "s│ %-"..(FileW+1) or "s%").."s│ %-"..MMaskW.."s" for _,m in ipairs(modules) do -- переберём все local FN,M,f = {},{},(m.FileName or L.Absent):gsub("\\$","\\init.lua"):match("[^\\]*$") -- разобьём имена файлов и маски поиска модуля if S.MaxFileWidth~=0 then for i=1,f:len(),FileW do FN[#FN+1] = f:sub(i,i+FileW-1) end end -- разобьём имя файла на части if S.MaxFileWidth<0 and FN[2] then FN = {FN[1]..CNT} end -- если имя файла в одну строку, урезается и не влазит в одну строку, исправим for i=1,m.mask:len(),MMaskW do if S.MaxDescWidth<0 and i>1 then M[#M] = M[#M]:sub(1,-2)..CNT break end M[#M+1] = m.mask:sub(i,i+MMaskW-1) end if (S.MaxDescWidth==0)or(S.MaxDescWidth==-1) then M = {m.mask} end -- если маска не разбивается items[#items+1] = {from=m,grayed=true,checked=m.disabled and DSB,pos="O"..m.name,text=frm:format(m.name,FN[1] or "",M[1])} if oldpos==items[#items].pos then pos = #items end for j=2,math.max(#FN,#M) do items[#items+1] = {from=m,grayed=true,checked=m.disabled and DSB,pos="O"..m.name,text=frm:format("",FN[j] or "",M[j] or "")} end end end | а конкретно Код: local FN,M,f = {},{},(m.FileName or L.Absent):gsub("\\$","\\init.lua"):match("[^\\]*$") -- разобьём имена файлов и маски поиска модуля | массив M[j] определён, только похоже иногда может не заполнится: Код: for i=1,m.mask:len(),MMaskW do if S.MaxDescWidth<0 and i>1 then M[#M] = M[#M]:sub(1,-2)..CNT break end M[#M+1] = m.mask:sub(i,i+MMaskW-1) end | Добавлено: Пока так пофиксил: Код: --- init.lua v6.0.1 +++ init.lua v6.0.1 try fix @@ -2596,10 +2596,11 @@ local frm = "%-"..(MNameW+1)..(S.MaxFileWidth~=0 and "s│ %-"..(FileW+1) or "s%").."s│ %-"..MMaskW.."s" for _,m in ipairs(modules) do -- переберём все local FN,M,f = {},{},(m.FileName or L.Absent):gsub("\\$","\\init.lua"):match("[^\\]*$") -- разобьём имена файлов и маски поиска модуля + if #M == 0 then M[1] = "" end -- if array M[j] is empty then add M[1] = "" for crash prevention if S.MaxFileWidth~=0 then for i=1,f:len(),FileW do FN[#FN+1] = f:sub(i,i+FileW-1) end end -- разобьём имя файла на части if S.MaxFileWidth<0 and FN[2] then FN = {FN[1]..CNT} end -- если имя файла в одну строку, урезается и не влазит в одну строку, исправим for i=1,m.mask:len(),MMaskW do if S.MaxDescWidth<0 and i>1 then M[#M] = M[#M]:sub(1,-2)..CNT break end M[#M+1] = m.mask:sub(i,i+MMaskW-1) end - if (S.MaxDescWidth==0)or(S.MaxDescWidth==-1) then M = {m.mask} end -- если маска не разбивается + if (S.MaxDescWidth==0) or (S.MaxDescWidth==-1) then M = {m.mask} end -- если маска не разбивается items[#items+1] = {from=m,grayed=true,checked=m.disabled and DSB,pos="O"..m.name,text=frm:format(m.name,FN[1] or "",M[1])} if oldpos==items[#items].pos then pos = #items end for j=2,math.max(#FN,#M) do | - заработало там. где только что ругалось на строку 2603, проверяем... Посмотрел у себя - там, где сбоило заработало без ошибок, потому исправленный модуль init_lua.tar.xz (этот модуль переделан! Ошибка исправлена иначе). P.S. Не инициализированные переменные и массивы любят подносить сюрпризы. Не просто так в IBM PL/1 компилятор на них выводит ошибку... P.P.S. Никогда не надо рассчитывать на то, что получив участок ОЗУ все его байты будут заполнены нулями т.к. подать сигнал RESET только на выбранные биты в массиве памяти невозможно, поэтому в общем случае там будут случайные значения, а потому размещаемые в ОЗУ переменные и массивы нужно всегда инициализировать, и лучше всего нулями.
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
| Всего записей: 33231 | Зарегистр. 31-07-2002 | Отправлено: 20:31 30-06-2023 | Исправлено: Victor_VG, 22:31 02-07-2023 |
|