[ruby-core:94287] [Ruby master Bug#10167] Prime#include?(mod) hangs up
From:
merch-redmine@...
Date:
2019-08-11 20:26:58 UTC
List:
ruby-core #94287
Issue #10167 has been updated by jeremyevans0 (Jeremy Evans).
I've added a pull request for this at https://github.com/ruby/prime/pull/6.
----------------------------------------
Bug #10167: Prime#include?(mod) hangs up
https://bugs.ruby-lang.org/issues/10167#change-80617
* Author: nitoyon (Kenichi Saita)
* Status: Open
* Priority: Normal
* Assignee: yugui (Yuki Sonoda)
* Target version:
* ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
We expect `Prime` class implements `Module#include?(mod)`. But `Prime#include?(mod)` hangs up, because it is overwritten by `Enumerable#include?(obj)` and tries to search `mod` linearly from infinite sequence of prime numbers.
**Reproducible script:**
~~~
$ ruby -e 'require "prime"; puts Prime.include?(Enumerable)'
~~~
* Expected: returns `true`
* Actual: hangs up
I found this bug by the following code (hangs up if prime is required)
~~~ruby
enumerables = []
ObjectSpace.each_object(Class){|klass|
if klass.include?(Enumerable) then
enumerables.push klass
end
}
~~~
---Files--------------------------------
prime-include.diff (1.21 KB)
--
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>