Issue #7526 has been updated by rubyhack (first last).


rubyhack (first last) wrote:
> the correction :
>         rescue Error
>           index += 1
>           next
>         end

that is: add only the line: "index += 1" to the lib and the bug is fixed

----------------------------------------
Bug #7526: infinit loop in Registry::each_value
https://bugs.ruby-lang.org/issues/7526#change-35044

Author: rubyhack (first last)
Status: Assigned
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category: lib
Target version: 2.0.0
ruby -v: All


in win32/registry.rb :
        begin
          type, data = read(subkey)
        rescue Error
          next
        end
the correction :
        rescue Error
          index += 1
          next
        end

I think that using Registry::info to get the number of values (also number of subkeys in each_key)
is a better solution so to skip problematic values.

also a limitation in Registry::read
      when REG_BINARY
        [ type, data ]

should be :
      when REG_BINARY, REG_NONE, REG_LINK, REG_RESOURCE_LIST, REG_RESOURCE_REQUIREMENTS_LIST
        [ type, data ]

instead of raising an exception for those types (in regedit.exe REG_NONE is equivalent to REG_BINARY)



-- 
http://bugs.ruby-lang.org/