def self.read_arbitrary_wide_string_up_to(ffi_pointer, max_char_length = 512, null_terminator = :single_null)
if null_terminator != :single_null && null_terminator != :double_null
raise _("Unable to read wide strings with %{null_terminator} terminal nulls") % { null_terminator: null_terminator }
end
terminator_width = null_terminator == :single_null ? 1 : 2
reader_method = null_terminator == :single_null ? :get_uint16 : :get_uint32
(0...max_char_length - terminator_width).each do |i|
return read_wide_string(ffi_pointer, i) if ffi_pointer.send(reader_method, (i * 2)) == 0
end
read_wide_string(ffi_pointer, max_char_length)
end