From: Ion Agorria <i...@agorria.com>

If a line overflows readline's maxlen it won't advance the membuffer
and will return 0 as read amount which isn't even documented.
Fix by removing this behavior alltogether.

Signed-off-by: Ion Agorria <i...@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamo...@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpersh...@baylibre.com>
---
 lib/membuff.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/lib/membuff.c b/lib/membuff.c
index 36dc43a523..f582193dcd 100644
--- a/lib/membuff.c
+++ b/lib/membuff.c
@@ -292,15 +292,12 @@ int membuff_readline(struct membuff *mb, char *str, int 
maxlen, int minch)
 {
        int len;  /* number of bytes read (!= string length) */
        char *s, *end;
-       bool ok = false;
-       char *orig = str;
 
        end = mb->head >= mb->tail ? mb->head : mb->end;
        for (len = 0, s = mb->tail; s < end && len < maxlen - 1; str++) {
                *str = *s++;
                len++;
                if (*str == '\n' || *str < minch) {
-                       ok = true;
                        break;
                }
                if (s == end && mb->tail > mb->head) {
@@ -309,13 +306,6 @@ int membuff_readline(struct membuff *mb, char *str, int 
maxlen, int minch)
                }
        }
 
-       /* couldn't get the whole string */
-       if (!ok) {
-               if (maxlen)
-                       *orig = '\0';
-               return 0;
-       }
-
        /* terminate the string, update the membuff and return success */
        *str = '\0';
        mb->tail = s == mb->end ? mb->start : s;
-- 
2.40.1

Reply via email to