问题描述
我在 LuaJit 2.1.0-beta2 上没有此问题,但由于原因,不得不更新为 beta3 。在某些时候,以下代码会在调用“ string.char(byte)”的行上生成错误。
“'char'的错误参数#1(预期数字,为零)”
function convert_to_null_terminated_string(data,offset,len)
if data:len() < (offset + len - 1) then
print("Data len " .. data:len() .. " < (offset+len-1) " .. (offset + len - 1))
return nil
end
local output = {}
for i = 0,len - 1 do
local byte = data:byte(offset + i)
if byte == 0 then break end
table.insert(output,string.char(byte))
end
return table.concat(output,"")
有关 string:byte()的文档没有提及该函数可能返回nil的可能性,并且我确定自己在字符串的边界之内,因为在该函数中进行了检查在调用 string:byte()之前。
值得一提的是,我使用 x64_GC 标志编译了LuaJit,从而有可能在Lua中分配超过1-2GB的内存。所有代码都在基于Amazon Linux 2主机上的Ubuntu 16的docker映像中运行。
看起来我正在面对LuaJit中的错误吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)