-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2013 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
if ( lfIt2 != linkFacesMap.end() )
{
list<const Cell*> & ff = lfIt2->second;
- ff.erase( find( ff.begin(), ff.end(), badFace ));
- if ( ff.empty() )
- linkFacesMap.erase( lfIt2 );
+ list<const Cell*>::iterator lfIt3 = find( ff.begin(), ff.end(), badFace );
+ // check if badFace has been found,
+ // else we can't erase it
+ // case of degenerated face in edge
+ if (lfIt3 != ff.end())
+ {
+ ff.erase( lfIt3 );
+ if ( ff.empty() )
+ linkFacesMap.erase( lfIt2 );
+ }
}
}
badFace->_reverse = true; // reverse
}
else
{
- fld->setValues( valPtr, iSub++ );
- setTS( fld, values, medFields, mesh, iSub );
+ fld->setValues( valPtr, iSub );
+ setTS( fld, values, medFields, mesh, iSub++ );
}
}
}
const int iSub)
{
// analyze a field support
- const Group* support = fld->getSupport();
+ const Group* support = fld->getSupport( iSub );
int dimRel;
const bool onAll = isOnAll( support, dimRel );
if ( !onAll && support->_name.empty() )
THROW_IK_EXCEPTION("SauvMedConvertor.cxx: support size mismatches field size");
// compute nb values in previous subs
int valsShift = 0;
- for ( int iS = iSub-1, shift = elemShift; shift > 0; )
+ for ( int iS = iSub-1, shift = elemShift; shift > 0; --iS)
{
int nbE = _sub[iS]._support->size();
shift -= nbE;