On Mon, Sep 08, 2025 at 04:59:48 -0400, Grisha Levit wrote:
> Alternatively, we could check that the _range_ ends are ASCII characters
> (and, depending on the desired behavior, check the character being tested
> as well) before disabling locale-aware collation.

This one makes the most sense to me -- the first half, I mean.

With globasciiranges on, we want [0-5] to match *only* the characters
0, 1, 2, 3, 4 and 5.  We want to disable locale-aware collation for all
characters when matching against this range, so that characters like ⁴
(superscript 4) are not matched.  If locale-aware collation is allowed
between 0 and ⁴, and between ⁴ and 5, then we get a false match.
I think that's what's happening currently.

hobbit:/tmp/x$ ls
1  2  ²  3  ⁴  ⁵
hobbit:/tmp/x$ shopt -u globasciiranges
hobbit:/tmp/x$ echo [0-5]
1 2 ² 3 ⁴
hobbit:/tmp/x$ shopt -s globasciiranges
hobbit:/tmp/x$ echo [0-5]
1 2 3 ⁴

Superscript 2 is correctly excluded, but superscript 4 is incorrectly
included.

Reply via email to