diff --git a/prism/src/prism/ProbModel.java b/prism/src/prism/ProbModel.java index 7e32735a..842b320f 100644 --- a/prism/src/prism/ProbModel.java +++ b/prism/src/prism/ProbModel.java @@ -870,18 +870,21 @@ public class ProbModel implements Model return index; } - // clear up (deref all dds, dd vars) - + /** + * Clear the model (deref all DDs and DD variables) + */ public void clear() { - for (int i = 0; i < numVars; i++) { - varDDRowVars[i].derefAll(); - varDDColVars[i].derefAll(); - } - for (int i = 0; i < numModules; i++) { - moduleDDRowVars[i].derefAll(); - moduleDDColVars[i].derefAll(); - } + if (varDDRowVars != null) + JDDVars.derefAllArray(varDDRowVars); + if (varDDColVars != null) + JDDVars.derefAllArray(varDDColVars); + + if (moduleDDRowVars != null) + JDDVars.derefAllArray(moduleDDRowVars); + if (moduleDDColVars != null) + JDDVars.derefAllArray(moduleDDColVars); + allDDRowVars.derefAll(); allDDColVars.derefAll(); JDD.Deref(trans); diff --git a/prism/src/prism/StateModelChecker.java b/prism/src/prism/StateModelChecker.java index 816b3f54..c2bf5e2b 100644 --- a/prism/src/prism/StateModelChecker.java +++ b/prism/src/prism/StateModelChecker.java @@ -151,9 +151,9 @@ public class StateModelChecker implements ModelChecker null, // moduleNames null, // moduleRowVars null, // moduleColVars - 0, // numVars + varDDRowVars.length, // numVars varList, // varList - varDDRowVars, // varDDRowVars + JDDVars.copyArray(varDDRowVars), // varDDRowVars null, // varDDColVars constantValues // constantValues );