Bläddra i källkod

Consume \n in mg_fgets when reading from membuf.

Pavel Khlebovich 12 år sedan
förälder
incheckning
5b84acbc14
1 ändrade filer med 7 tillägg och 4 borttagningar
  1. 7 4
      mongoose.c

+ 7 - 4
mongoose.c

@@ -2418,10 +2418,13 @@ static char *mg_fgets(char *buf, size_t size, struct file *filep, char **p) {
 
 
   if (filep->membuf != NULL && *p != NULL) {
   if (filep->membuf != NULL && *p != NULL) {
     eof = (char *) memchr(*p, '\n', &filep->membuf[filep->size] - *p);
     eof = (char *) memchr(*p, '\n', &filep->membuf[filep->size] - *p);
-    len = (size_t) (eof - *p) > size - 1 ? size - 1 : (size_t) (eof - *p);
-    memcpy(buf, *p, len);
-    buf[len] = '\0';
-    *p = eof;
+    if (eof != NULL) {
+      eof += 1; // Include \n
+      len = (size_t) (eof - *p) > size - 1 ? size - 1 : (size_t) (eof - *p);
+      memcpy(buf, *p, len);
+      buf[len] = '\0';
+      *p = eof;
+    }
     return eof;
     return eof;
   } else if (filep->fp != NULL) {
   } else if (filep->fp != NULL) {
     return fgets(buf, size, filep->fp);
     return fgets(buf, size, filep->fp);