|  | @@ -1703,7 +1703,9 @@ size_t cmWriteToFileCallback(void* ptr, size_t size, size_t nmemb, void* data)
 | 
											
												
													
														|  |    cmsys::ofstream* fout = static_cast<cmsys::ofstream*>(data);
 |  |    cmsys::ofstream* fout = static_cast<cmsys::ofstream*>(data);
 | 
											
												
													
														|  |    if (fout) {
 |  |    if (fout) {
 | 
											
												
													
														|  |      char const* chPtr = static_cast<char*>(ptr);
 |  |      char const* chPtr = static_cast<char*>(ptr);
 | 
											
												
													
														|  | -    fout->write(chPtr, realsize);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if (!fout->write(chPtr, realsize)) {
 | 
											
												
													
														|  | 
 |  | +      return CURL_WRITEFUNC_ERROR;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |    return realsize;
 |  |    return realsize;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
										
											
												
													
														|  | @@ -2283,6 +2285,14 @@ bool HandleDownloadCommand(std::vector<std::string> const& args,
 | 
											
												
													
														|  |    g_curl.release();
 |  |    g_curl.release();
 | 
											
												
													
														|  |    ::curl_easy_cleanup(curl);
 |  |    ::curl_easy_cleanup(curl);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +  // Explicitly close the file so we can check for write errors.
 | 
											
												
													
														|  | 
 |  | +  if (!file.empty()) {
 | 
											
												
													
														|  | 
 |  | +    fout.close();
 | 
											
												
													
														|  | 
 |  | +    if (!fout) {
 | 
											
												
													
														|  | 
 |  | +      res = CURLE_WRITE_ERROR;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |    if (!statusVar.empty()) {
 |  |    if (!statusVar.empty()) {
 | 
											
												
													
														|  |      std::string m = curl_easy_strerror(res);
 |  |      std::string m = curl_easy_strerror(res);
 | 
											
												
													
														|  |      if ((res == CURLE_SSL_CONNECT_ERROR ||
 |  |      if ((res == CURLE_SSL_CONNECT_ERROR ||
 | 
											
										
											
												
													
														|  | @@ -2306,13 +2316,6 @@ bool HandleDownloadCommand(std::vector<std::string> const& args,
 | 
											
												
													
														|  |      status.GetMakefile().AddDefinition(logVar, chunkDebug.data());
 |  |      status.GetMakefile().AddDefinition(logVar, chunkDebug.data());
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  // Explicitly flush/close so we can measure the md5 accurately.
 |  | 
 | 
											
												
													
														|  | -  //
 |  | 
 | 
											
												
													
														|  | -  if (!file.empty()) {
 |  | 
 | 
											
												
													
														|  | -    fout.flush();
 |  | 
 | 
											
												
													
														|  | -    fout.close();
 |  | 
 | 
											
												
													
														|  | -  }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |    // Verify MD5 sum if requested:
 |  |    // Verify MD5 sum if requested:
 | 
											
												
													
														|  |    //
 |  |    //
 | 
											
												
													
														|  |    if (hash) {
 |  |    if (hash) {
 |