From 769eeff3cfd22ae649199715f4c88af1cc5a818c Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Mon, 27 Apr 2015 15:04:43 -0600 Subject: 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. --- layers/draw_state.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) mode change 100644 => 100755 layers/draw_state.cpp (limited to 'layers/draw_state.cpp') diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp old mode 100644 new mode 100755 index 5bfe41d4..8ab366fe --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -980,9 +980,11 @@ static GLOBAL_CB_NODE* getCBNode(VkCmdBuffer cb) static void deleteCmdBuffers() { for (unordered_map::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_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; } -- cgit v1.2.3