[ruby-core:95865] [Ruby master Bug#16350] ArithmeticSequence#member? can result in infinite loop
From:
nobu@...
Date:
2019-11-16 22:43:31 UTC
List:
ruby-core #95865
Issue #16350 has been updated by nobu (Nobuyoshi Nakada). Assignee set to mrkn (Kenta Murata) Status changed from Open to Assigned ---------------------------------------- Bug #16350: ArithmeticSequence#member? can result in infinite loop https://bugs.ruby-lang.org/issues/16350#change-82697 * Author: parker (Parker Finch) * Status: Assigned * Priority: Normal * Assignee: mrkn (Kenta Murata) * Target version: * ruby -v: ruby 2.7.0dev * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- I'm not sure if this is a bug or a feature, it feels somewhere in between. This is my first time contributing to the Ruby code, let me know what I can improve in this report! ArithmeticSequence#member? enumerates through the sequence in order to determine if an element is included. (It just uses Enumerable#member?.) This leads to an infinite loop if the sequence is infinite and the element is not included, such as `1.step.member?(0)`. I expected `1.step.member?(0)` to return `false`. Since ArithmeticSequences are much more constrained than regular Enumerables, the #member? method can be overridden to efficiently determine if an element is included in the sequence. I started implementing this change (patch attached) but got a little confused when trying to handle floats. Before digging in too deeply, I wanted to check if this is a change that will be accepted. Let me know if I should keep looking into this! ---Files-------------------------------- 0001-Start-implementing-ArithmeticSequence-member.patch (3.96 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:[email protected]?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>