draw_state: Fix Microsoft C++ iterator assert
The Microsoft Visual Studio vector library does not like this code:
delete (*ii).second->pCmds.back();
Internally, pCmds.back() does a pCmds.end() - 1 and since the
vector we are using (*ii).second->pCmds is not local, the library
throws an assert about the iterator being non-incrementable.
The assert if fixed by making a local copy of the vector and
working on that.
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
old mode 100644
new mode 100755
index 5bfe41d..8ab366f
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -980,9 +980,11 @@
static void deleteCmdBuffers()
{
for (unordered_map<VkCmdBuffer, GLOBAL_CB_NODE*>::iterator ii=cmdBufferMap.begin(); ii!=cmdBufferMap.end(); ++ii) {
- while (!(*ii).second->pCmds.empty()) {
- delete (*ii).second->pCmds.back();
- (*ii).second->pCmds.pop_back();
+ vector<CMD_NODE*> cmd_node_list = (*ii).second->pCmds;
+ while (!cmd_node_list.empty()) {
+ CMD_NODE* cmd_node = cmd_node_list.back();
+ delete cmd_node;
+ cmd_node_list.pop_back();
}
delete (*ii).second;
}