X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeIntArray.cpp;h=a61a9cc0e97c3d373bd9b2731f35c8dcc61e7d10;hb=1b9dd3633d644c358424227423b330e9551be38f;hp=8f21a427dcc2f437a7573fd57022d1c15e690fd9;hpb=baa32827d0f7eac19aca82eb41d2aa708b358181;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeIntArray.cpp b/src/Model/Model_AttributeIntArray.cpp index 8f21a427d..a61a9cc0e 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); + } + // 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);