Skip to content

Commit

Permalink
Merge pull request #31 from saalfeldlab/fix/bufferOverflow
Browse files Browse the repository at this point in the history
fix: incorrect size when initialized with long[] length 0
  • Loading branch information
cmhulbert authored Apr 12, 2024
2 parents 26aea35 + b0d22e0 commit 3ac7bf1
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ protected void referToDataAt(final MappedAccessData<T> data, final long baseOffs
this.baseOffset = baseOffset;
this.elementBaseOffset = baseOffset + ByteUtils.INT_SIZE;
data.updateAccess(access, baseOffset);
size = access.getInt(0);
if (baseOffset < data.size())
size = access.getInt(0);
else
size = 0;
}

public void createListAt(final MappedAccessData<T> data, final long baseOffset) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package net.imglib2.type.label;

import com.google.common.collect.Streams;
import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.stream.Stream;

import static org.junit.Assert.assertEquals;

public class LabelMultisetEntryListTest {

@Test
public void sizeCheck() {

LabelMultisetEntryList lmel = new LabelMultisetEntryList();
assertEquals(0, lmel.size());

LongMappedAccessData listData = LongMappedAccessData.factory.createStorage(0);
lmel = new LabelMultisetEntryList(listData, 0);
assertEquals(0, lmel.size());

listData = LongMappedAccessData.factory.createStorage(16);
lmel = new LabelMultisetEntryList(listData, 0);
assertEquals(0, lmel.size());

listData = LongMappedAccessData.factory.createStorage(16);
lmel = new LabelMultisetEntryList(listData, 0);
lmel.add(new LabelMultisetEntry(1, 10));
assertEquals(1, lmel.size());

listData = LongMappedAccessData.factory.createStorage(0);
lmel = new LabelMultisetEntryList(listData, 0);
lmel.add(new LabelMultisetEntry(1, 10));
lmel.add(new LabelMultisetEntry(1, 10));
lmel.add(new LabelMultisetEntry(2, 10));
assertEquals(2, lmel.size());
}

}

0 comments on commit 3ac7bf1

Please sign in to comment.