Windows: File.truncate has two string encoding issues
rb_str_encode_ospath() which returns a UTF-8 encoded Ruby string.
Then it passes a pointer to the underlying C string to
At last the UTF-8 string is passed to
This also means it doesn't support Unicode unlike (hopefully all) other File singleton methods.
s = "\u2603"
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.
- Status changed from Open to Closed
Applied in changeset r54887.
- test/ruby/test_file_exhaustive.rb: test UTF-8 filename. see [Bug #12340]
- Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED
I can't find your attached file :-P, but I've fixed now.
Oops! The tests you've added are much more comprehensive than mine anyway. Thank you for the quick fix.
- Backport changed from 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: WONTFIX, 2.2: DONE, 2.3: REQUIRED
ruby_2_2 r55347 merged revision(s) 54887-54889.
- Backport changed from 2.1: WONTFIX, 2.2: DONE, 2.3: REQUIRED to 2.1: WONTFIX, 2.2: DONE, 2.3: DONE
ruby_2_3 r55400 merged revision(s) 54887-54889.
Also available in: Atom