1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-29 05:21:00 +01:00

22760: fix partial string length reports with NO_MULTIBYTE

This commit is contained in:
Peter Stephenson 2017-07-02 20:29:00 +01:00
parent e19955614f
commit e8edd42f7f
3 changed files with 26 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2017-07-02 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 22760: Src/utils.c, Test/D04parameter.ztst: NO_MULTIBYTE
partial string lengths were reported as full string lengths.
2017-06-27 Peter Stephenson <p.stephenson@samsung.com>
* 41368: Src/Zle/compctl.c: missing unqueue_signals().

View file

@ -5417,7 +5417,7 @@ mb_metastrlenend(char *ptr, int width, char *eptr)
int num, num_in_char, complete;
if (!isset(MULTIBYTE))
return ztrlen(ptr);
return eptr ? (int)(eptr - ptr) : ztrlen(ptr);
laststart = ptr;
ret = MB_INVALID;

View file

@ -783,16 +783,36 @@
0:${(R)...}
>is the ,
# Although there's no reliance on multibyte here, the
# code exercised is different, so test both paths in the following group.
# If the shell isn't multibyte capable the tests are the same;
# that's not a problem.
# This (1) doesn't work with // or /
# (2) perhaps ought to be 18, to be consistent with normal zsh
# substring indexing and with backreferences.
print ${(BES)string##white}
(unsetopt multibyte; print ${(BES)string##white})
0:${(BE...)...}
>14 19
>14 19
print ${(NS)string##white}
(unsetopt multibyte; print ${(NS)string##white})
0:${(N)...}
>5
>5
fn() {
emulate -L zsh
local a=abcdef
print ${(SNBE)a#abcd}
unsetopt multibyte
print ${(SNBE)a#abcd}
}
fn
0:${(BEN)...} again, with match
>1 5 4
>1 5 4
string='abcdefghijklmnopqrstuvwxyz'
print ${${string%[aeiou]*}/(#m)?(#e)/${(U)MATCH}}