Mercurial > code
changeset 156:8c7812fefe0f
Fix buf_cut
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 20 Jul 2012 13:31:58 +0200 |
parents | 3fde269076a7 |
children | 996337564c4d 44e7b975618a |
files | buf.c |
diffstat | 1 files changed, 7 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/buf.c Mon Jul 16 11:46:50 2012 +0200 +++ b/buf.c Fri Jul 20 13:31:58 2012 +0200 @@ -211,20 +211,17 @@ */ void -buf_cut(struct buf *buf, int n) +buf_cut(struct buf *buf, int start) { - int pos; - - if (n < 0 || (unsigned int)n >= buf->length) + if ((start > 0 && start >= buf->length) || + (start < 0 && (int)buf->length + start < 0)) return; - if (n < 0 && buf->length - (-n) > 0) - pos = buf->length - (-n); - else if ((unsigned int)n < buf->length) - pos = n; + if (start < 0 && buf->length + start >= 0) + start = buf->length + start; - buf->text[pos] = '\0'; - buf->length -= buf->length - pos; + buf->text[start] = '\0'; + buf->length -= buf->length - start; } /*