diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2022-02-07 20:44:29 -0500 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2022-02-19 02:40:37 -0500 |
commit | 9b55ac6da56699e8d234b909963ec66c648dbca7 (patch) | |
tree | 0c67033865eefeb3eb2ee04695b53cefc9ef21d0 /src/mod_dirlisting.c | |
parent | 6cd3b5f8affe03498911e6958ec3702fd3f8d7c6 (diff) | |
download | lighttpd-git-9b55ac6da56699e8d234b909963ec66c648dbca7.tar.gz |
[multiple] pedantic chunk.c checks for 0-len chunk
Diffstat (limited to 'src/mod_dirlisting.c')
-rw-r--r-- | src/mod_dirlisting.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/mod_dirlisting.c b/src/mod_dirlisting.c index 7667c78c..1366a235 100644 --- a/src/mod_dirlisting.c +++ b/src/mod_dirlisting.c @@ -1519,16 +1519,17 @@ static int mod_dirlisting_write_cq (const int fd, chunkqueue * const cq, log_err cq->bytes_out -= in.bytes_in; /*(similar to mod_webdav.c:mod_webdav_write_cq(), but operates on two cqs)*/ - chunkqueue_remove_finished_chunks(&in); while (!chunkqueue_is_empty(&in)) { ssize_t wr = chunkqueue_write_chunk(fd, &in, errh); - if (wr > 0) + if (__builtin_expect( (wr > 0), 1)) chunkqueue_steal(cq, &in, wr); else if (wr < 0) { /*(writing to tempfile failed; transfer remaining data back to cq)*/ chunkqueue_append_chunkqueue(cq, &in); return 0; } + else /*(wr == 0)*/ + chunkqueue_remove_finished_chunks(&in); } return 1; } |