Actions
Bug #12340
closedWindows: File.truncate has two string encoding issues
Description
File.truncate
calls rb_str_encode_ospath()
which returns a UTF-8 encoded Ruby string.
Then it passes a pointer to the underlying C string to truncate()
aka rb_w32_truncate()
.
At last the UTF-8 string is passed to CreateFile()
aka CreateFileA()
(ANSI).
This also means it doesn't support Unicode unlike (hopefully all) other File singleton methods.
s = "\u2603"
IO.write(s, '123')
File.truncate(s, 0) # Errno::ENOENT: No such file or directory @ rb_file_s_truncate - ☃
A possible fix is attached. I'm not sure about the test code. I also couldn't find any similar tests. The actual fix should be fine however.
Actions
Like0
Like0Like0Like0Like0Like0