BddUtils.valuationToStates may crash due to initializing a list with negative initial size
Stack trace: ``` java.lang.IllegalArgumentException: Illegal Capacity: -2147483648 at java.base/java.util.ArrayList.<init>(ArrayList.java:160) at org.eclipse.escet.common.java.Lists.listc(Lists.java:220) at org.eclipse.escet.cif.bdd.utils.BddUtils.valuationToStates(BddUtils.java:473) ``` The problem is in the following code: ``` // Get list to store resulting states, with a decently-approximated initial size. ListProductIterator<Object> stateIter = new ListProductIterator<>(valuesPerVar); Optional<Long> stateCountOrOverflow = stateIter.getResultSize(); long cappedStateCount = stateCountOrOverflow.orElse(Long.MAX_VALUE); int approxStateCount = (int)cappedStateCount; List<Map<CifBddVariable, Object>> states = listc(Math.min(approxStateCount, maxStateCount)); ``` The `long` to `int` cast may lead to negative values.
issue

Copyright © Eclipse Foundation AISBL. All rights reserved.     Privacy Policy | Terms of Use | Copyright Agent