Revert "fix length after '\' getline string termination"

Caused a regression in sed, revert until we investigate further.
diff --git a/cut.c b/cut.c
index 4719c8b..0258271 100644
--- a/cut.c
+++ b/cut.c
@@ -115,8 +115,8 @@
 	Range *r;
 
 	while ((len = getline(&buf, &size, fp)) > 0) {
-		if (buf[len - 1] == '\n')
-			buf[--len] = '\0';
+		if (len && buf[len - 1] == '\n')
+			buf[len - 1] = '\0';
 		if (mode == 'f' && !utfutf(buf, delim)) {
 			if (!sflag)
 				puts(buf);
diff --git a/head.c b/head.c
index bece31b..a99b6f4 100644
--- a/head.c
+++ b/head.c
@@ -15,7 +15,7 @@
 
 	while (i < n && (len = getline(&buf, &size, fp)) > 0) {
 		fputs(buf, stdout);
-		i += (buf[len - 1] == '\n');
+		i += (len && (buf[len - 1] == '\n'));
 	}
 	free(buf);
 	if (ferror(fp))
diff --git a/sed.c b/sed.c
index 819a944..6cfd121 100644
--- a/sed.c
+++ b/sed.c
@@ -441,8 +441,8 @@
 			eprintf("getline:");
 		return EOF;
 	}
-	if (s->str[len] == '\n')
-		s->str[--len] = '\0';
+	if (s->str[--len] == '\n')
+		s->str[len] = '\0';
 	return 0;
 }
 
diff --git a/tail.c b/tail.c
index 9addb0d..4ab5fde 100644
--- a/tail.c
+++ b/tail.c
@@ -23,7 +23,7 @@
 
 	if (mode == 'n') {
 		while (i < n && (len = getline(&buf, &size, fp)) > 0)
-			if (buf[len - 1] == '\n')
+			if (len > 0 && buf[len - 1] == '\n')
 				i++;
 	} else {
 		while (i < n && (len = efgetrune(&r, fp, str)))
diff --git a/uudecode.c b/uudecode.c
index 28e9147..1d0bf72 100644
--- a/uudecode.c
+++ b/uudecode.c
@@ -169,9 +169,9 @@
 	while ((len = getline(&bufb, &n, fp)) > 0) {
 		p = bufb;
 		/* trim newlines */
-		if (bufb[len - 1] != '\n')
+		if (!len || bufb[len - 1] != '\n')
 			eprintf("no newline found, aborting\n");
-		bufb[--len] = '\0';
+		bufb[len - 1] = '\0';
 
 		/* check for last line */
 		if ((i = DEC(*p)) <= 0)