Don't call 'FilesToRemove[0]' when the vector is empty, even to compute
authorChandler Carruth <chandlerc@gmail.com>
Sat, 16 Jun 2012 00:44:07 +0000 (00:44 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 16 Jun 2012 00:44:07 +0000 (00:44 +0000)
the address of it. Found by a checking STL implementation used on
a dragonegg builder. Sorry about this one. =/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158582 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/Unix/Signals.inc

index b2e5fd8b0a5fad27135c7e09619743f20ff11605..519511685dd64667fc66113bc1b6c58563d31ec4 100644 (file)
@@ -189,7 +189,7 @@ void llvm::sys::SetInterruptFunction(void (*IF)()) {
 bool llvm::sys::RemoveFileOnSignal(const sys::Path &Filename,
                                    std::string* ErrMsg) {
   SignalsMutex.acquire();
-  std::string *OldPtr = &FilesToRemove[0];
+  std::string *OldPtr = FilesToRemove.empty() ? 0 : &FilesToRemove[0];
   FilesToRemove.push_back(Filename.str());
 
   // We want to call 'c_str()' on every std::string in this vector so that if