forked from OSchip/llvm-project
				
			Check for errors on close(2) too. And lseek(2).
llvm-svn: 75793
This commit is contained in:
		
							parent
							
								
									33fb640835
								
							
						
					
					
						commit
						213e87b1fe
					
				| 
						 | 
					@ -279,7 +279,8 @@ raw_fd_ostream::~raw_fd_ostream() {
 | 
				
			||||||
  if (FD >= 0) {
 | 
					  if (FD >= 0) {
 | 
				
			||||||
    flush();
 | 
					    flush();
 | 
				
			||||||
    if (ShouldClose)
 | 
					    if (ShouldClose)
 | 
				
			||||||
      ::close(FD);
 | 
					      if (::close(FD) != 0)
 | 
				
			||||||
 | 
					        llvm_report_error("IO failure closing output stream.");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -294,13 +295,16 @@ void raw_fd_ostream::close() {
 | 
				
			||||||
  assert (ShouldClose);
 | 
					  assert (ShouldClose);
 | 
				
			||||||
  ShouldClose = false;
 | 
					  ShouldClose = false;
 | 
				
			||||||
  flush();
 | 
					  flush();
 | 
				
			||||||
  ::close(FD);
 | 
					  if (::close(FD) != 0)
 | 
				
			||||||
 | 
					    llvm_report_error("IO failure closing output stream.");
 | 
				
			||||||
  FD = -1;
 | 
					  FD = -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint64_t raw_fd_ostream::seek(uint64_t off) {
 | 
					uint64_t raw_fd_ostream::seek(uint64_t off) {
 | 
				
			||||||
  flush();
 | 
					  flush();
 | 
				
			||||||
  pos = ::lseek(FD, off, SEEK_SET);
 | 
					  pos = ::lseek(FD, off, SEEK_SET);
 | 
				
			||||||
 | 
					  if (pos != off)
 | 
				
			||||||
 | 
					    llvm_report_error("IO failure seeking on output stream.");
 | 
				
			||||||
  return pos;  
 | 
					  return pos;  
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue