[ruby-core:74842] Re: [Ruby trunk - Bug #10820] Win32 Registry Delete uses ANSI instead of Wide APIs

From: Joe Swatosh <joe.swatosh@...>
Date: 2016-04-07 14:19:39 UTC
List: ruby-core #74842
I think this needs a follow on patch (patch is for 2.1, but I didn't see
any relevant changes in the svn commit log). This just changes where
the constants renamed in this issue are referenced later in the file.

**************

---
D:/Ruby/ruby-2.1.8-i386-mingw32/lib/ruby/2.1.0/win32/registry.rb.original
Tue Jan 12 05:21:04 2016

+++ D:/Ruby/ruby-2.1.8-i386-mingw32/lib/ruby/2.1.0/win32/registry.rb    Mon
Apr  4 08:17:45 2016

@@ -321,11 +321,11 @@ For detail, see the MSDN[http://msdn.microsoft.com

       end

       def DeleteValue(hkey, name)
-        check RegDeleteValue.call(hkey, make_wstr(name))
+        check RegDeleteValueW.call(hkey, make_wstr(name))
       end

       def DeleteKey(hkey, name)
-        check RegDeleteKey.call(hkey, make_wstr(name))
+        check RegDeleteKeyW.call(hkey, make_wstr(name))
       end

       def FlushKey(hkey)

*************************

Thanks for checking!



On Mon, Aug 17, 2015 at 12:15 AM, <usa@garbagecollect.jp> wrote:

> Issue #10820 has been updated by Usaku NAKAMURA.
>
> Backport changed from 2.0.0: DONTNEED, 2.1: REQUIRED, 2.2: DONE to 2.0.0:
> DONTNEED, 2.1: DONE, 2.2: DONE
>
> ruby_2_1 r51596 merged revision(s) 49542.
>
> ----------------------------------------
> Bug #10820: Win32 Registry Delete uses ANSI instead of Wide APIs
> https://bugs.ruby-lang.org/issues/10820#change-53810
>
> * Author: Rob Reynolds
> * Status: Closed
> * Priority: Normal
> * Assignee: cruby-windows
> * ruby -v: 2.1.5
> * Backport: 2.0.0: DONTNEED, 2.1: DONE, 2.2: DONE
> ----------------------------------------
>
> https://github.com/ruby/ruby/blob/trunk/ext/win32/lib/win32/registry.rb#L236-L237
>
> Contains:
>
> ~~~ruby
>     module API
>       include Constants
>       extend Importer
>       dlload "advapi32.dll"
>       [
>         "long RegOpenKeyExW(void *, void *, long, long, void *)",
>         "long RegCreateKeyExW(void *, void *, long, long, long, long, void
> *, void *, void *)",
>         "long RegEnumValueW(void *, long, void *, void *, void *, void *,
> void *, void *)",
>         "long RegEnumKeyExW(void *, long, void *, void *, void *, void *,
> void *, void *)",
>         "long RegQueryValueExW(void *, void *, void *, void *, void *,
> void *)",
>         "long RegSetValueExW(void *, void *, long, long, void *, long)",
>         "long RegDeleteValue(void *, void *)",
>         "long RegDeleteKey(void *, void *)",
>         "long RegFlushKey(void *)",
>         "long RegCloseKey(void *)",
>         "long RegQueryInfoKey(void *, void *, void *, void *, void *, void
> *, void *, void *, void *, void *, void *, void *)",
>       ].each do |fn|
>         cfunc = extern fn, :stdcall
>         const_set cfunc.name.intern, cfunc
>       end
> ~~~
>
> Should use `RegDeleteValueW` and `RegDeleteKeyW`.
>
>
>
>
> --
> 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>

In This Thread

Prev Next