Merge a fix for a Task bug which breaks the RWLock test
diff --git a/aos/externals/WPILib/WPILib/Task.cpp b/aos/externals/WPILib/WPILib/Task.cpp
index 5310d41..37f7d2f 100644
--- a/aos/externals/WPILib/WPILib/Task.cpp
+++ b/aos/externals/WPILib/WPILib/Task.cpp
@@ -88,7 +88,12 @@
bool ok = true;
if (Verify())
{
- ok = HandleError(taskDelete(m_taskID));
+ STATUS result = taskDelete(m_taskID);
+ // If it got deleted between the Verify() and the taskDelete then it's not
+ // an actual error.
+ if (errno != S_objLib_OBJ_DELETED) {
+ ok = HandleError(result);
+ }
}
m_taskID = kInvalidTaskID;
return ok;
@@ -136,6 +141,7 @@
*/
bool Task::Verify()
{
+ if (m_taskID == kInvalidTaskID) return false;
return taskIdVerify(m_taskID) == OK;
}
@@ -188,6 +194,7 @@
/**
* Handles errors generated by task related code.
+ * @return Whether or not this result is considered successful.
*/
bool Task::HandleError(STATUS results)
{