Bug #8866

frozen string literal("foo"f ) can ignore source encoding after r42843.

Added by Tomoyuki Chikanaga 7 months ago. Updated 7 months ago.

[ruby-core:57037]
Status:Closed
Priority:Normal
Assignee:Charlie Somerville
Category:core
Target version:2.1.0
ruby -v:ruby 2.1.0dev (2013-09-05 trunk 42844) [x86_64-darwin11.4.2] Backport:1.9.3: DONTNEED, 2.0.0: DONTNEED

Description

Hello,

After r42843, frozen string literal can have encoding different from script encoding.

example:

usascii.rb:

coding: us-ascii

def usascii
"foo"f
end

utf8.rb:

coding: utf-8

def utf8
"foo"f
end

$ ruby -r./usascii -r./utf8 -e 'p [usascii.objectid == utf8.objectid, usascii.encoding, utf8.encoding]'
[true, #Encoding:US-ASCII, #Encoding:US-ASCII]
$ ruby -r./utf8 -r./usascii -e 'p [usascii.objectid == utf8.objectid, usascii.encoding, utf8.encoding]'
[true, #Encoding:UTF-8, #Encoding:UTF-8]

It is because fstringhashtype use rbstrcmd for compare functions.
rbstrcmd() treat strings contains only ascii characters with ascii compatible encodings as same strings.

Regards.

Associated revisions

Revision 42847
Added by Charlie Somerville 7 months ago

  • string.c (fstring_cmp): take string encoding into account when
    comparing fstrings [Bug #8866]

  • test/ruby/test_string.rb: add test

History

#1 Updated by Charlie Somerville 7 months ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r42847.
Tomoyuki, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • string.c (fstring_cmp): take string encoding into account when
    comparing fstrings [Bug #8866]

  • test/ruby/test_string.rb: add test

Also available in: Atom PDF