diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2005-01-26 18:12:08 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2005-01-26 18:12:08 +0000 |
commit | 85e0b5f3770fc0bb84b080740dd578169d4e511c (patch) | |
tree | ef55f3c5749a70f8100765f9e19a1bdd43ce639d /Src/Zle/zle_utils.c | |
parent | 3934f7a40208adc9334b5f957be4c5b9dee29979 (diff) | |
download | zsh-85e0b5f3770fc0bb84b080740dd578169d4e511c.tar.gz zsh-85e0b5f3770fc0bb84b080740dd578169d4e511c.tar.xz zsh-85e0b5f3770fc0bb84b080740dd578169d4e511c.zip |
20752: fix access to ZLE parameters
Diffstat (limited to 'Src/Zle/zle_utils.c')
-rw-r--r-- | Src/Zle/zle_utils.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c index 0e8099bd2..ffd94def8 100644 --- a/Src/Zle/zle_utils.c +++ b/Src/Zle/zle_utils.c @@ -410,9 +410,14 @@ foredel(int ct) /**/ void -setline(char const *s) +setline(char *s, int flags) { - char *scp = ztrdup(s); + char *scp; + + if (flags & ZSL_COPY) + scp = ztrdup(s); + else + scp = s; /* * TBD: we could make this more efficient by passing the existing * allocated line to stringaszleline. @@ -421,10 +426,13 @@ setline(char const *s) zleline = stringaszleline(scp, &zlell, &linesz); - if ((zlecs = zlell) && invicmdmode()) + if ((flags & ZSL_TOEND) && (zlecs = zlell) && invicmdmode()) zlecs--; + else if (zlecs > zlell) + zlecs = zlell; - free(scp); + if (flags & ZSL_COPY) + free(scp); } /**/ |