I encountered the following bug in std.string.inPattern:

        import std.stdio;

        void main()
        {
            foreach (c; ' ' .. '~')
                writeln(inPattern(c, " -~"));
        }

Which is caused by this:

        else if (range)
        {
            range = 0;
            if (lastc <= c && c <= p || c == p)
                return !result;
        }
        else if (p == '-' && i > result && i + 1 < pattern.length)
        {
            range = 1;
            continue;
        }

Before submitting the bug report and what I believe to be the fix (simply deleting these lines from the implementation), I would like to seek clarification on what exactly is being attempted here. Why is would we conclude that arbitrary range of characters were located after encountering an embedded '-' in any pattern that's at least 3 characters long and pattern[0] < pattern[indexOf['-'] + 1]?

Andrew

Reply via email to