Issue #12034 has been updated by Nobuyoshi Nakada.


Eric Wong wrote:
> How about fall back to ASCII-8BIT if we detect broken code range?

It may be desirable or undesirable, as it can cause unexpected failure later.

> ```diff
> +        link = "\xde\xad\xbe\xef".b
> +        File.symlink(link, 'foo')
> +        str = File.readlink('foo')
> +        assert_predicate str, :valid_encoding?, bug12034
> +        assert_equal link, str, bug12034

Anyway, "\xde\xad\xbe\xef" is a valid string in some encodings, e.g., EUC-JP, ISO-8859-1, and so on.
Especially in ISO-8859 encodings, any bytes are valid.

----------------------------------------
Feature #12034: RegExp does not respect file encoding directive
https://bugs.ruby-lang.org/issues/12034#change-56916

* Author: Vit Ondruch
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
~~~
$ cat regexp-encoding.rb
# -*- encoding: binary -*-
puts ''.encoding
puts //.encoding

$ ruby regexp-encoding.rb 
ASCII-8BIT
US-ASCII
~~~

The RegExp should have ASCII-8BIT encoding IMO.




Actually there is something different how Ruby 2.3 behaves with regards to encoding, since I cannot compile raindrops gem with Ruby 2.3 anymore due to this test error:

~~~
 1) Error:
TestLinux#test_unix_resolves_symlinks:
RegexpError: /.../n has a non escaped non ASCII character in non ASCII-8BIT script
    /builddir/build/BUILD/rubygem-raindrops-0.13.0/usr/share/gems/gems/raindrops-0.13.0/lib/raindrops/linux.rb:57:in `unix_listener_stats'
    /builddir/build/BUILD/rubygem-raindrops-0.13.0/usr/share/gems/gems/raindrops-0.13.0/test/test_linux.rb:97:in `test_unix_resolves_symlinks'
~~~

This is the line where it fails:

http://bogomips.org/raindrops.git/tree/lib/raindrops/linux.rb#n57





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>