X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeIntArray.cpp;h=b9cb85876640992a1a499fd2791519c6fd491087;hb=1c4fdb35d274c6205676a78e58edc196c28e7c4f;hp=8f21a427dcc2f437a7573fd57022d1c15e690fd9;hpb=8584051f701aa3428620ebb98ecc03461cc23824;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeIntArray.cpp b/src/Model/Model_AttributeIntArray.cpp index 8f21a427d..b9cb85876 100644 --- a/src/Model/Model_AttributeIntArray.cpp +++ b/src/Model/Model_AttributeIntArray.cpp @@ -20,12 +20,19 @@ int Model_AttributeIntArray::size() { - return myArray.IsNull() ? 0 : myArray->Length(); + if (myArray.IsNull() || !myArray->IsValid()) { + // this could be on undo and then redo creation of the attribute + // in result creation it may be uninitialized + myIsInitialized = myLab.FindAttribute(TDataStd_IntegerArray::GetID(), myArray) == Standard_True; + } + // checking the validity because attribute (as a field) may be presented, + // but without label: it is undoed + return (myArray.IsNull() || !myArray->IsValid()) ? 0 : myArray->Length(); } void Model_AttributeIntArray::setSize(const int theSize) { - if (myArray.IsNull()) { // create array if it is not done yet + if (myArray.IsNull() || !myArray->IsValid()) { // create array if it is not done yet if (theSize != 0) { // if size is zero, nothing to do (null array means there is no array) myArray = TDataStd_IntegerArray::Set(myLab, 0, theSize); owner()->data()->sendAttributeUpdated(this);