diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2010-10-10 17:51:29 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2010-10-10 17:51:29 +0000 |
commit | af5a85f3630f3d60ad7061fe32693baf78c27dcd (patch) | |
tree | 57a70dffb5fda8bd5cc77ea03ca7479954de9eea /Src/params.c | |
parent | 6fea7f0d3c4d30ddc78db9e798a3ef9427abbc6f (diff) | |
download | zsh-af5a85f3630f3d60ad7061fe32693baf78c27dcd.tar.gz zsh-af5a85f3630f3d60ad7061fe32693baf78c27dcd.tar.xz zsh-af5a85f3630f3d60ad7061fe32693baf78c27dcd.zip |
28339: backslash-newline history without HIST_LEX_WORDS
28340: assignment to range of scalar variable with multibyte characters
Diffstat (limited to 'Src/params.c')
-rw-r--r-- | Src/params.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c index 9a9f45893..f49a07f1a 100644 --- a/Src/params.c +++ b/Src/params.c @@ -2275,9 +2275,22 @@ setstrvalue(Value v, char *val) if (v->start > zlen) v->start = zlen; if (v->end < 0) { - v->end += zlen + 1; - if (v->end < 0) + v->end += zlen; + if (v->end < 0) { v->end = 0; + } else if (v->end >= zlen) { + v->end = zlen; + } else { +#ifdef MULTIBYTE_SUPPORT + if (isset(MULTIBYTE)) { + v->end += MB_METACHARLEN(z + v->end); + } else { + v->end++; + } +#else + v->end++; +#endif + } } else if (v->end > zlen) v->end = zlen; |