- OwningPtr<MemoryBuffer> MB;
- if (MemoryBuffer::getFile(LockFileName, MB)) {
- StringRef Hostname;
- StringRef PIDStr;
- tie(Hostname, PIDStr) = getToken(MB->getBuffer(), " ");
- int PID;
- if (PIDStr.getAsInteger(10, PID))
- return std::make_pair(std::string(Hostname), PID);
+ ErrorOr<std::unique_ptr<MemoryBuffer>> MBOrErr =
+ MemoryBuffer::getFile(LockFileName);
+ if (!MBOrErr) {
+ sys::fs::remove(LockFileName);
+ return None;
+ }
+ MemoryBuffer &MB = *MBOrErr.get();
+
+ StringRef Hostname;
+ StringRef PIDStr;
+ std::tie(Hostname, PIDStr) = getToken(MB.getBuffer(), " ");
+ PIDStr = PIDStr.substr(PIDStr.find_first_not_of(" "));
+ int PID;
+ if (!PIDStr.getAsInteger(10, PID)) {
+ auto Owner = std::make_pair(std::string(Hostname), PID);
+ if (processStillExecuting(Owner.first, Owner.second))
+ return Owner;