mirror of
https://github.com/curl/curl.git
synced 2026-08-02 14:00:29 +03:00
- Bjorn Augustsson reported a bug which made curl not report any problems even
though it failed to write a very small download to disk (done in a single fwrite call). It turned out to be because fwrite() returned success, but there was insufficient error-checking for the fclose() call which tricked curl to believe things were fine.
This commit is contained in:
parent
b723500af0
commit
1fddcb3f88
3 changed files with 26 additions and 5 deletions
20
src/main.c
20
src/main.c
|
|
@ -3316,9 +3316,15 @@ static size_t my_fwrite(void *buffer, size_t sz, size_t nmemb, void *stream)
|
|||
curl_easy_pause(config->easy, CURLPAUSE_CONT);
|
||||
}
|
||||
|
||||
if(config->nobuffer)
|
||||
if(config->nobuffer) {
|
||||
/* disable output buffering */
|
||||
fflush(out->stream);
|
||||
rc = fflush(out->stream);
|
||||
if(rc) {
|
||||
/* return a value that isn't the same as sz * nmemb */
|
||||
rc = (0 == (sz * nmemb)) ? 1 : 0;
|
||||
return rc; /* failure */
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
@ -5170,8 +5176,14 @@ show_error:
|
|||
}
|
||||
}
|
||||
|
||||
if (outfile && !curlx_strequal(outfile, "-") && outs.stream)
|
||||
fclose(outs.stream);
|
||||
if (outfile && !curlx_strequal(outfile, "-") && outs.stream) {
|
||||
int rc = fclose(outs.stream);
|
||||
if(!res && rc) {
|
||||
/* something went wrong in the writing process */
|
||||
res = CURLE_WRITE_ERROR;
|
||||
fprintf(config->errors, "(%s) Failed writing body\n", res);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_UTIME
|
||||
/* Important that we set the time _after_ the file has been
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue