Mercurial > hg > octave-nkf
diff src/ov-class.cc @ 12178:a71c1aa9823e
fix construction of class exemplars
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 27 Jan 2011 04:22:53 -0500 |
parents | d08901c05c1b |
children | 7a5aacf65f81 |
line wrap: on
line diff
--- a/src/ov-class.cc +++ b/src/ov-class.cc @@ -1068,9 +1068,25 @@ { octave_value ctor = symbol_table::find_method (c_name, c_name); - if (ctor.is_defined ()) + bool have_ctor = false; + + if (ctor.is_defined () && ctor.is_function ()) { - octave_value_list result = feval (ctor, 1); + octave_function *fcn = ctor.function_value (); + + if (fcn && fcn->is_class_constructor (c_name)) + have_ctor = true; + + // Something has gone terribly wrong if + // symbol_table::find_method (c_name, c_name) does not return + // a class constructor for the class c_name... + assert (have_ctor); + } + + if (have_ctor) + { + octave_value_list result + = ctor.do_multi_index_op (1, octave_value_list ()); if (result.length () == 1) retval = true;