src/server/util/writer.c

branch
webdav
changeset 232
499711b2a970
parent 211
2160585200ac
child 318
60870dbac94f
--- a/src/server/util/writer.c	Fri Jan 17 22:23:30 2020 +0100
+++ b/src/server/util/writer.c	Sat Jan 18 13:48:59 2020 +0100
@@ -71,6 +71,7 @@
         return w->error;
     }
     
+    // available bytes
     size_t a = w->size - w->pos;
     if(a == 0) {
         if(writer_flush(w)) {
@@ -78,11 +79,13 @@
         }
     }
     
-    size_t cplen = len > a ? a : len;
-    memcpy(w->buffer, s, cplen);
+    size_t cplen = len > a ? a : len; // number of bytes we can copy
+    memcpy(w->buffer+w->pos, s, cplen);
     w->pos += cplen;
     
     if(cplen < len) {
+        // not all bytes copied -> call writer_put again
+        // the number of available bytes is 0 then, therefore flush is called
         return writer_put(w, s + cplen, len - cplen);
     } else {
         return 0;

mercurial