This: | local ffi = require "ffi" | print(string.byte(ffi.string(ffi.new("char[3]", "ABC"), 3), 1, -1)) prints: | 65 66 0 I think this is rather surprising. I would have expected: | 65 66 67 Is this a bug or a feature?