Bug Fix - std::vector::erase
- Fixed bug whereby code called std::vector::erase, but then continued as though the iterator was still good.
This commit is contained in:
@@ -290,6 +290,7 @@ void Context::loadCorrectConfigFile ()
|
|||||||
|
|
||||||
// No need to handle it again.
|
// No need to handle it again.
|
||||||
args.erase (arg);
|
args.erase (arg);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,6 +306,7 @@ void Context::loadCorrectConfigFile ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Apply overrides of type: "rc.name:value"
|
// Apply overrides of type: "rc.name:value"
|
||||||
|
std::vector <std::string> filtered;
|
||||||
foreach (arg, args)
|
foreach (arg, args)
|
||||||
{
|
{
|
||||||
if (arg->substr (0, 3) == "rc.")
|
if (arg->substr (0, 3) == "rc.")
|
||||||
@@ -322,11 +324,12 @@ void Context::loadCorrectConfigFile ()
|
|||||||
message (std::string ("Configuration override ") + // TODO i18n
|
message (std::string ("Configuration override ") + // TODO i18n
|
||||||
arg->substr (3, std::string::npos));
|
arg->substr (3, std::string::npos));
|
||||||
}
|
}
|
||||||
|
|
||||||
// No need to handle it again.
|
|
||||||
args.erase (arg);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
filtered.push_back (*arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
args = filtered;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -353,6 +353,7 @@ int TDB::gc ()
|
|||||||
|
|
||||||
// Now move completed and deleted tasks from the pending list to the
|
// Now move completed and deleted tasks from the pending list to the
|
||||||
// completed list. Isn't garbage collection easy?
|
// completed list. Isn't garbage collection easy?
|
||||||
|
std::vector <Task> still_pending;
|
||||||
foreach (task, pending)
|
foreach (task, pending)
|
||||||
{
|
{
|
||||||
std::string st = task->get ("status");
|
std::string st = task->get ("status");
|
||||||
@@ -361,11 +362,14 @@ int TDB::gc ()
|
|||||||
s == Task::deleted)
|
s == Task::deleted)
|
||||||
{
|
{
|
||||||
completed.push_back (*task);
|
completed.push_back (*task);
|
||||||
pending.erase (task);
|
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
still_pending.push_back (*task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pending = still_pending;
|
||||||
|
|
||||||
// No commit - all updates performed manually.
|
// No commit - all updates performed manually.
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user