Fix problem in DifferenceList() function: when group becomes empty, an invalid compound is created by error.

This commit is contained in:
vsr 2011-04-22 14:44:29 +00:00
parent 3ef88bf27f
commit fa7612374a

View File

@ -485,14 +485,20 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
if (mapIDsToRemove.Extent() > 0) { if (mapIDsToRemove.Extent() > 0) {
Standard_Integer k = 1, aRemLength = mapIDsToRemove.Extent(); Standard_Integer k = 1, aRemLength = mapIDsToRemove.Extent();
Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aLength - aRemLength); Handle(TColStd_HArray1OfInteger) aNewSeq;
if ( aLength - aRemLength > 0 ) {
aNewSeq = new TColStd_HArray1OfInteger(1, aLength - aRemLength);
for (j = 1; j <= aLength; j++) { for (j = 1; j <= aLength; j++) {
if (!mapIDsToRemove.Contains(aSeq->Value(j))) { if (!mapIDsToRemove.Contains(aSeq->Value(j))) {
aNewSeq->SetValue(k, aSeq->Value(j)); aNewSeq->SetValue(k, aSeq->Value(j));
k++; k++;
} }
} }
}
else {
aNewSeq = new TColStd_HArray1OfInteger(1,1);
aNewSeq->SetValue(1, -1);
}
aSSI.SetIndices(aNewSeq); aSSI.SetIndices(aNewSeq);