# HG changeset patch # User gedeone-octave # Date 1374499947 -7200 # Node ID a4ef215d1eeda4bbd9c0f273708a95a7d40edd36 # Parent c73bca616ca74281325357647c63d4943d6946d7 Check if size of input parameters agree diff -r c73bca616ca7 -r a4ef215d1eed src/fem_func.cc --- a/src/fem_func.cc Mon Jul 22 15:13:30 2013 +0200 +++ b/src/fem_func.cc Mon Jul 22 15:32:27 2013 +0200 @@ -40,21 +40,26 @@ { const boost::shared_ptr & V = fspo.get_pfsp (); - dolfin::Vector du(myu.length ()); - for (std::size_t i = 0; i < myu.length (); ++i) - du.setitem (i, myu(i)); - - boost::shared_ptr uu (new dolfin::Vector(du)); - boost::shared_ptr u (new dolfin::Function(V, uu)); + if (V->dim () != myu.length ()) + error ("The size of the functional space and of the vector must agree"); + else + { + dolfin::Vector du(myu.length ()); + for (std::size_t i = 0; i < myu.length (); ++i) + du.setitem (i, myu(i)); - if (! function_type_loaded) - { - function::register_type (); - function_type_loaded = true; - mlock (); - } + boost::shared_ptr uu (new dolfin::Vector(du)); + boost::shared_ptr u (new dolfin::Function(V, uu)); - retval = new function (u); + if (! function_type_loaded) + { + function::register_type (); + function_type_loaded = true; + mlock (); + } + + retval = new function (u); + } } } }