- IED 61850 server: fixed bug creating arrays of data objects

pull/521/head
Michael Zillgith 1 year ago
parent eab2e6f2cb
commit 5a3c2285ef

@ -611,21 +611,24 @@ DataObject_create(const char* name, ModelNode* parent, int arrayElements)
self->elementCount = arrayElements; self->elementCount = arrayElements;
self->arrayIndex = -1; self->arrayIndex = -1;
if (arrayElements > 0) { if (arrayElements > 0)
{
int i; int i;
for (i = 0; i < arrayElements; i++) { for (i = 0; i < arrayElements; i++)
{
DataObject* arrayElement = (DataObject*) GLOBAL_MALLOC(sizeof(DataObject)); DataObject* arrayElement = (DataObject*) GLOBAL_MALLOC(sizeof(DataObject));
if (self) { if (arrayElement)
self->name = NULL; {
self->modelType = DataObjectModelType; arrayElement->name = NULL;
self->firstChild = NULL; arrayElement->modelType = DataObjectModelType;
self->parent = parent; arrayElement->firstChild = NULL;
self->sibling = NULL; arrayElement->parent = parent;
arrayElement->sibling = NULL;
self->elementCount = 0; arrayElement->elementCount = 0;
self->arrayIndex = i; arrayElement->arrayIndex = i;
DataObject_addChild(self, (ModelNode*) arrayElement); DataObject_addChild(self, (ModelNode*) arrayElement);
} }

@ -760,12 +760,14 @@ ModelNode_getChildWithIdx(ModelNode* self, int idx)
{ {
ModelNode* foundElement = NULL; ModelNode* foundElement = NULL;
if (self->modelType == DataObjectModelType || self->modelType == DataAttributeModelType) { if (self->modelType == DataObjectModelType || self->modelType == DataAttributeModelType)
{
ModelNode* nextNode = self->firstChild; ModelNode* nextNode = self->firstChild;
int currentIdx = 0; int currentIdx = 0;
while (nextNode) { while (nextNode)
{
if (currentIdx == idx) { if (currentIdx == idx) {
foundElement = nextNode; foundElement = nextNode;
break; break;

Loading…
Cancel
Save