For files with sizes using an exact multiple of 256 bytes, the final
successful read(s) filled the buffer(s) and the subsequent fread
returned 0 for EOF, which caused read_file_into to fail.
Now, it needs to return 0 and not be EOF to be an error.
Follow-up to
dd95a49d493d55db38b352fdbda2
Pointed out by ZeroPath
Closes #19104
for(;;) {
uint8_t buf[256];
const size_t rr = fread(buf, 1, sizeof(buf), f);
- if(rr == 0 ||
- CURLE_OK != curlx_dyn_addn(out, buf, rr)) {
+ if((!rr && !feof(f)) ||
+ curlx_dyn_addn(out, buf, rr)) {
curlx_fclose(f);
return 0;
}