From f7f8873c0e40f01e55fa2939474837cc3d783a0e Mon Sep 17 00:00:00 2001 From: Mark Spruiell Date: Mon, 26 Jan 2004 22:47:09 +0000 Subject: fix --- cpp/src/FreezeScript/DumpDescriptors.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'cpp/src/FreezeScript/DumpDescriptors.cpp') diff --git a/cpp/src/FreezeScript/DumpDescriptors.cpp b/cpp/src/FreezeScript/DumpDescriptors.cpp index 242997c628e..4a308c7de64 100644 --- a/cpp/src/FreezeScript/DumpDescriptors.cpp +++ b/cpp/src/FreezeScript/DumpDescriptors.cpp @@ -1129,14 +1129,18 @@ FreezeScript::IterateDescriptor::execute(const SymbolTablePtr& sym, ExecuteInfo* index = "i"; } + // + // NOTE: Don't use iterator to traverse vector because child descriptors might remove elements. + // DataList& l = seq->getElements(); - Ice::Long i = 0; - for(DataList::iterator p = l.begin(); p != l.end(); ++p, ++i) + DataList::size_type i = 0; + while(i < l.size()) { SymbolTablePtr elemSym = sym->createChild(); - elemSym->add(element, *p); + elemSym->add(element, l[i]); elemSym->add(index, _factory->createInteger(i, true)); ExecutableContainerDescriptor::execute(elemSym, info); + ++i; } } } -- cgit v1.2.3