[PPL-devel] [GIT] ppl/ppl(master): Check fir and avoid space dimension mismatches in merge_assign().

Enea Zaffanella zaffanella at cs.unipr.it
Sat Feb 20 08:53:57 CET 2010


Module: ppl/ppl
Branch: master
Commit: 084cb1f825471435bd1e1b0bb1eb0ed8eabd368d
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=084cb1f825471435bd1e1b0bb1eb0ed8eabd368d

Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date:   Sat Feb 20 08:50:53 2010 +0100

Check fir and avoid space dimension mismatches in merge_assign().

---

 src/PIP_Tree.cc |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index 222efeb..deaeb15 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -69,7 +69,9 @@ merge_assign(Matrix& x,
     return;
   const dimension_type old_num_rows = x.num_rows();
   x.add_zero_rows(new_rows, Row::Flags());
+
   // Compute once for all.
+  const dimension_type cs_space_dim = y.space_dimension();
   const Variables_Set::const_iterator param_begin = parameters.begin();
   const Variables_Set::const_iterator param_end = parameters.end();
 
@@ -81,8 +83,12 @@ merge_assign(Matrix& x,
     x_i[0] = y_i->inhomogeneous_term();
     Variables_Set::const_iterator pj;
     dimension_type j = 1;
-    for (pj = param_begin; pj != param_end; ++pj, ++j)
-      x_i[j] = y_i->coefficient(Variable(*pj));
+    for (pj = param_begin; pj != param_end; ++pj, ++j) {
+      Variable vj(*pj);
+      if (vj.space_dimension() > cs_space_dim)
+        break;
+      x_i[j] = y_i->coefficient(vj);
+    }
   }
 }
 




More information about the PPL-devel mailing list