diff --git a/prism-tests/bugfixes/invalidrewardindexsim.sm.props.args b/prism-tests/bugfixes/invalidrewardindexsim.sm.props.args index c016d0c3..85203854 100644 --- a/prism-tests/bugfixes/invalidrewardindexsim.sm.props.args +++ b/prism-tests/bugfixes/invalidrewardindexsim.sm.props.args @@ -1 +1,4 @@ +# Originally a simulation bug, but now test on all engines -sim +-ex +-h diff --git a/prism/src/parser/ast/ExpressionReward.java b/prism/src/parser/ast/ExpressionReward.java index 2d6ffb95..35504b7f 100644 --- a/prism/src/parser/ast/ExpressionReward.java +++ b/prism/src/parser/ast/ExpressionReward.java @@ -140,7 +140,8 @@ public class ExpressionReward extends ExpressionQuant else if (rsi instanceof Expression) { int i = ((Expression) rsi).evaluateInt(constantValues); rsi = new Integer(i); // (for better error reporting below) - rewStruct = i - 1; + // Check in range (set to -1 if not) and convert to zero-indexed + rewStruct = (i < 1 || i > modelInfo.getNumRewardStructs()) ? -1 : i - 1; } // String - name of reward structure else if (rsi instanceof String) {