Skip to content

Commit

Permalink
* lib/uri/common.rb (URI.encode_www_form_component): initialize on
Browse files Browse the repository at this point in the history
  requiring to support JRuby, which runs parallel multithreads.
  [ruby-core:42222] [Bug ruby#5925]

* lib/uri/common.rb (URI.decode_www_form_component): initialize on

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nurse committed Jan 24, 2012
1 parent e1fbcc4 commit edb7cdf
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 28 deletions.
8 changes: 8 additions & 0 deletions ChangeLog
@@ -1,3 +1,11 @@
Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>

* lib/uri/common.rb (URI.encode_www_form_component): initialize on
requiring to support JRuby, which runs parallel multithreads.
[ruby-core:42222] [Bug #5925]

* lib/uri/common.rb (URI.decode_www_form_component): initialize on

Mon Jan 23 20:33:11 2012 Jason Kay <geniture@me.com>

* lib/net/http.rb (Net::HTTP#connect): Writing entire packet at
Expand Down
43 changes: 15 additions & 28 deletions lib/uri/common.rb
Expand Up @@ -849,7 +849,22 @@ def self.regexp(schemes = nil)
end

TBLENCWWWCOMP_ = {} # :nodoc:
256.times do |i|
TBLENCWWWCOMP_[i.chr] = '%%%02X' % i
end
TBLENCWWWCOMP_[' '] = '+'
TBLENCWWWCOMP_.freeze
TBLDECWWWCOMP_ = {} # :nodoc:
256.times do |i|
h, l = i>>4, i&15
TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
end
TBLDECWWWCOMP_['+'] = ' '
TBLDECWWWCOMP_.freeze

HTML5ASCIIINCOMPAT = [Encoding::UTF_7, Encoding::UTF_16BE, Encoding::UTF_16LE,
Encoding::UTF_32BE, Encoding::UTF_32LE] # :nodoc:

Expand All @@ -863,18 +878,6 @@ def self.regexp(schemes = nil)
#
# See URI.decode_www_form_component, URI.encode_www_form
def self.encode_www_form_component(str)
if TBLENCWWWCOMP_.empty?
tbl = {}
256.times do |i|
tbl[i.chr] = '%%%02X' % i
end
tbl[' '] = '+'
begin
TBLENCWWWCOMP_.replace(tbl)
TBLENCWWWCOMP_.freeze
rescue
end
end
str = str.to_s
if HTML5ASCIIINCOMPAT.include?(str.encoding)
str = str.encode(Encoding::UTF_8)
Expand All @@ -892,22 +895,6 @@ def self.encode_www_form_component(str)
#
# See URI.encode_www_form_component, URI.decode_www_form
def self.decode_www_form_component(str, enc=Encoding::UTF_8)
if TBLDECWWWCOMP_.empty?
tbl = {}
256.times do |i|
h, l = i>>4, i&15
tbl['%%%X%X' % [h, l]] = i.chr
tbl['%%%x%X' % [h, l]] = i.chr
tbl['%%%X%x' % [h, l]] = i.chr
tbl['%%%x%x' % [h, l]] = i.chr
end
tbl['+'] = ' '
begin
TBLDECWWWCOMP_.replace(tbl)
TBLDECWWWCOMP_.freeze
rescue
end
end
raise ArgumentError, "invalid %-encoding (#{str})" unless /\A[^%]*(?:%\h\h[^%]*)*\z/ =~ str
str.gsub(/\+|%\h\h/, TBLDECWWWCOMP_).force_encoding(enc)
end
Expand Down

0 comments on commit edb7cdf

Please sign in to comment.