https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2009-08-12T05:07:18Z
Ruby Issue Tracking System
Ruby master - Bug #1929: str.dup.force_encodingが元のstrに影響を与えることがある
https://redmine.ruby-lang.org/issues/1929?journal_id=5218
2009-08-12T05:07:18Z
znz (Kazuhiro NISHIYAMA)
<ul></ul><p>=begin<br>
まだ長いように思いますが、単体で再現できるものができたので送っておきます。</p>
<p>% cat c.rb<br>
#!/usr/bin/env ruby-trunk</p>
<a name="---coding-utf-8-"></a>
<h1 >-<em>- coding: utf-8 -</em>-<a href="#---coding-utf-8-" class="wiki-anchor">¶</a></h1>
<p>require 'pstore'<br>
require 'cgi'<br>
require 'erb'</p>
<p>def cache_file(c)<br>
'c.db'<br>
end</p>
<p>params = CGI::parse("category=%E3%81%A6%E3%81%99%E3%81%A8")<br>
categories = params['category']<br>
categorized = {}<br>
$dump_categorized = proc do |file, line|<br>
$stderr.puts [file, line, categories.map{|e|[e[0].object_id, e[0].encoding]}].inspect<br>
$stderr.puts [file, line, categorized.map{|e|[e[0].object_id, e[0].encoding]}].inspect<br>
end<br>
$dump_categorized[<strong>FILE</strong>, <strong>LINE</strong>]<br>
categories.each do |c|<br>
PStore.new(cache_file(c)).transaction do |db|<br>
categorized[c] = db['category']<br>
db.abort<br>
end<br>
end</p>
<p>$dump_categorized[<strong>FILE</strong>, <strong>LINE</strong>]<br>
categorized.keys.each do |c|<br>
PStore.new(cache_file(c)).transaction do |db|<br>
db['category'] = {} unless db.root?('category')<br>
db['category'].update(categorized[c] || {})<br>
end<br>
end<br>
$dump_categorized[<strong>FILE</strong>, <strong>LINE</strong>]<br>
categories.map{|e|ERB::Util.u(e)}<br>
$dump_categorized[<strong>FILE</strong>, <strong>LINE</strong>]<br>
% ruby-trunk c.rb -v<br>
["c.rb", 18, [[10938200, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 18, []]<br>
["c.rb", 26, [[10937000, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 26, [[10937100, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 33, [[10935120, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 33, [[10937100, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 35, [[10932440, #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>]]]<br>
["c.rb", 35, [[10937100, #<a href="Encoding:ASCII-8BIT" class="external">Encoding:ASCII-8BIT</a>]]]<br>
% ruby-trunk -v<br>
ruby 1.9.2dev (2009-08-07 trunk 24439) [x86_64-linux]<br>
%<br>
=end</p>
Ruby master - Bug #1929: str.dup.force_encodingが元のstrに影響を与えることがある
https://redmine.ruby-lang.org/issues/1929?journal_id=5224
2009-08-12T13:07:07Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
Applied in changeset r24509.<br>
=end</p>