Skip to content

Commit d8a43e7

Browse files
committed
[SWE] Fix bug when accessing/setting individual elements from
DataBlockParallel + need to get a unique copy if data needs to remain accessible while iterating through the array
1 parent f9536cd commit d8a43e7

File tree

3 files changed

+4
-8
lines changed

3 files changed

+4
-8
lines changed

lib-ogc/swe-common-core/src/main/java/org/vast/data/AbstractRecordImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ public void setData(DataBlock dataBlock)
149149
{
150150
for (int i = 0; i < fieldList.size(); i++)
151151
{
152-
AbstractDataBlock childBlock = ((DataBlockParallel)dataBlock).blockArray[i];
152+
AbstractDataBlock childBlock = ((DataBlockParallel)dataBlock).blockArray[i].copy();
153+
childBlock.startIndex = ((DataBlockParallel)dataBlock).startIndex;
153154
((AbstractDataComponentImpl)fieldList.get(i)).setData(childBlock);
154155
}
155156
}

lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockParallel.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,7 @@ public DataBlockParallel copy()
7272
{
7373
DataBlockParallel newBlock = new DataBlockParallel();
7474
newBlock.startIndex = this.startIndex;
75-
newBlock.blockArray = new AbstractDataBlock[blockArray.length];
76-
77-
// shallow copy all blocks in the array
78-
for (int i=0; i<blockArray.length; i++)
79-
newBlock.blockArray[i] = this.blockArray[i].copy();
80-
75+
newBlock.blockArray = this.blockArray;
8176
newBlock.atomCount = this.atomCount;
8277
return newBlock;
8378
}

lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ public IDataAccessor next()
344344
{
345345
var elt = array.getComponent(idx++);
346346
var accessor = createElementProxy(clazz, array.getElementType());
347-
accessor.wrap(elt.getData());
347+
accessor.wrap(elt.getData().copy());
348348
return accessor;
349349
}
350350
};

0 commit comments

Comments
 (0)