# HG changeset patch # User John W. Eaton # Date 1320194902 14400 # Node ID daf81e42960c99ffc3c0c1f49596e29289547275 # Parent 0bbe319bf26be61eab75974c310f4fc88e0a4165 allow nargin to work for functions that are not already loaded * ov-usr-fcn.cc (Fnargin): Call symbol_table::find_function, not symbol_table::find_user_function. diff -r 0bbe319bf26b -r daf81e42960c src/ov-usr-fcn.cc --- a/src/ov-usr-fcn.cc Tue Nov 01 19:57:38 2011 -0400 +++ b/src/ov-usr-fcn.cc Tue Nov 01 20:48:22 2011 -0400 @@ -648,23 +648,33 @@ if (! error_state) { - octave_value fcn_val = symbol_table::find_user_function (fname); + octave_value fcn_val = symbol_table::find_function (fname); - octave_user_function *fcn = fcn_val.user_function_value (true); - - if (fcn) + if (fcn_val.is_user_function ()) { - if (fcn->takes_varargs ()) - retval = -1; - else + octave_user_function *fcn = fcn_val.user_function_value (true); + + if (fcn) { - tree_parameter_list *param_list = fcn->parameter_list (); + if (fcn->takes_varargs ()) + retval = -1; + else + { + tree_parameter_list *param_list = fcn->parameter_list (); - retval = param_list ? param_list->length () : 0; + retval = param_list ? param_list->length () : 0; + } } + else + error ("nargin: loading user-defined function failed"); } else - error ("nargin: invalid function"); + { + // FIXME -- what about built-in functions or functions + // defined in .oct files or .mex files? + + error ("nargin: FCN_NAME must be a user-defined function"); + } } else error ("nargin: FCN_NAME must be a string");