From 96caf197ab33141540b6d8806d78a53593a8948d Mon Sep 17 00:00:00 2001 From: Joachim Klein Date: Tue, 11 Aug 2015 14:28:23 +0000 Subject: [PATCH] dd_matrix.cc: fix recently introduced error handling + some whitespace cleanup git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10493 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/dd/dd_matrix.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/prism/src/dd/dd_matrix.cc b/prism/src/dd/dd_matrix.cc index 06f4f2e7..8cbb6d01 100644 --- a/prism/src/dd/dd_matrix.cc +++ b/prism/src/dd/dd_matrix.cc @@ -29,6 +29,7 @@ #include #include #include +#include // for NaN value #include #include #include "dd_matrix.h" @@ -263,29 +264,32 @@ long x int *inputs; double val; - if (dd == NULL) return NULL; + if (dd == NULL) { + DD_SetErrorFlag(); + return std::numeric_limits::quiet_NaN(); + } // create array to store 0's & 1's used to query DD inputs = new int[Cudd_ReadSize(ddman)]; - + for (i = 0; i < Cudd_ReadSize(ddman); i++) { inputs[i] = 0; } - - for (i = 0; i < num_vars; i++) { + + for (i = 0; i < num_vars; i++) { inputs[vars[i]->index] = ((x & (1l<<(num_vars-i-1))) == 0) ? 0 : 1; } node = Cudd_Eval(ddman, dd, inputs); if (node == NULL) { DD_SetErrorFlag(); - return 0; + return std::numeric_limits::quiet_NaN(); } val = Cudd_V(node); - + if (inputs != NULL) { delete[] inputs; } - + return val; }