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;
 }
 
 /*