Lua string :: byte在LuaJit 2.1.0-beta3

问题描述

我在 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 (将#修改为@)