From b16b5afa2446c1b8663c38e09b1341d9f1e6afe5 Mon Sep 17 00:00:00 2001 From: usa Date: Tue, 9 Jul 2013 01:30:47 +0000 Subject: * ext/{dl,fiddle}/win32/lib/win32/registry.rb (Win32::Registry.expand_environ): use suitable encoding for the string. * ext/{dl,fiddle}/win32/lib/win32/registry.rb (Win32::Registry#read): should return REG_SZ, REG_EXPAND_SZ and REG_MULTI_SZ values with the expected encoding -- assumed as the same encoding of name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/dl/win32/lib/win32/registry.rb | 6 +++--- ext/fiddle/win32/lib/win32/registry.rb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'ext') diff --git a/ext/dl/win32/lib/win32/registry.rb b/ext/dl/win32/lib/win32/registry.rb index abe9e36f9b..472f8228b3 100644 --- a/ext/dl/win32/lib/win32/registry.rb +++ b/ext/dl/win32/lib/win32/registry.rb @@ -340,7 +340,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr # For detail, see expandEnvironmentStrings[http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp] \Win32 \API. # def self.expand_environ(str) - str.gsub(Regexp.compile("%([^%]+)%".encode(str.encoding))) { ENV[$1] || ENV[$1.upcase] || $& } + str.gsub(Regexp.compile("%([^%]+)%".encode(str.encoding))) { (e = ENV[$1.encode(locale)], e.encode(str.encoding) if e) || (e = ENV[$1.encode(locale).upcase], e.encode(str.encoding) if e) || $& } end @@type2name = { } @@ -600,9 +600,9 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr end case type when REG_SZ, REG_EXPAND_SZ - [ type, data.chop ] + [ type, data.encode(name.encoding).rstrip ] when REG_MULTI_SZ - [ type, data.split(/\0/) ] + [ type, data.encode(name.encoding).split(/\0/) ] when REG_BINARY [ type, data ] when REG_DWORD diff --git a/ext/fiddle/win32/lib/win32/registry.rb b/ext/fiddle/win32/lib/win32/registry.rb index 1c881ee300..21ee6bb030 100644 --- a/ext/fiddle/win32/lib/win32/registry.rb +++ b/ext/fiddle/win32/lib/win32/registry.rb @@ -340,7 +340,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr # For detail, see expandEnvironmentStrings[http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp] \Win32 \API. # def self.expand_environ(str) - str.gsub(Regexp.compile("%([^%]+)%".encode(str.encoding))) { ENV[$1] || ENV[$1.upcase] || $& } + str.gsub(Regexp.compile("%([^%]+)%".encode(str.encoding))) { (e = ENV[$1.encode(locale)], e.encode(str.encoding) if e) || (e = ENV[$1.encode(locale).upcase], e.encode(str.encoding) if e) || $& } end @@type2name = { } @@ -600,9 +600,9 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr end case type when REG_SZ, REG_EXPAND_SZ - [ type, data.chop ] + [ type, data.encode(name.encoding).rstrip ] when REG_MULTI_SZ - [ type, data.split(/\0/) ] + [ type, data.encode(name.encoding).split(/\0/) ] when REG_BINARY [ type, data ] when REG_DWORD -- cgit v1.2.3