mirror of
https://github.com/zsh-users/zsh
synced 2024-07-21 10:14:19 +00:00
23278: fix NUMERICGLOBSORT, broken by multibyte fixes
This commit is contained in:
parent
f368975eff
commit
7bb711a3d6
|
@ -1,5 +1,8 @@
|
|||
2007-04-15 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 23278: Src/sort.c, Test/D07multibyte.ztst: Fix
|
||||
NUMERICGLOBSORT, broken by 23118.
|
||||
|
||||
* users/11398: Src/zle_move.c: vi-goto-mark was broken
|
||||
by multibyte characters.
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@ eltpcmp(const void *a, const void *b)
|
|||
{
|
||||
const SortElt ae = *(const SortElt *)a;
|
||||
const SortElt be = *(const SortElt *)b;
|
||||
const char *as = ae->cmp;
|
||||
const char *bs = be->cmp;
|
||||
const char *as = ae->cmp, *bs = be->cmp;
|
||||
const char *ao = as;
|
||||
int cmp;
|
||||
|
||||
if (ae->len != -1 || be->len != -1) {
|
||||
|
@ -122,7 +122,7 @@ eltpcmp(const void *a, const void *b)
|
|||
cmp = (int)STOUC(*as) - (int)STOUC(*bs);
|
||||
#endif
|
||||
if (idigit(*as) || idigit(*bs)) {
|
||||
for (; as > *(char **)a && idigit(as[-1]); as--, bs--);
|
||||
for (; as > ao && idigit(as[-1]); as--, bs--);
|
||||
if (idigit(*as) && idigit(*bs)) {
|
||||
while (*as == '0')
|
||||
as++;
|
||||
|
|
|
@ -358,3 +358,22 @@
|
|||
>1 148
|
||||
>1 149
|
||||
>1 150
|
||||
|
||||
touch ngs1.txt ngs2.txt ngs10.txt ngs20.txt ngs100.txt ngs200.txt
|
||||
setopt numericglobsort
|
||||
print -l ngs*
|
||||
unsetopt numericglobsort
|
||||
print -l ngs*
|
||||
0:NUMERIC_GLOB_SORT option in UTF-8 locale
|
||||
>ngs1.txt
|
||||
>ngs2.txt
|
||||
>ngs10.txt
|
||||
>ngs20.txt
|
||||
>ngs100.txt
|
||||
>ngs200.txt
|
||||
>ngs100.txt
|
||||
>ngs10.txt
|
||||
>ngs1.txt
|
||||
>ngs200.txt
|
||||
>ngs20.txt
|
||||
>ngs2.txt
|
||||
|
|
Loading…
Reference in a new issue