*** src/ov-fcn-inline.cc~ 2004-09-23 14:21:19.000000000 +0200 --- src/ov-fcn-inline.cc 2004-09-24 16:48:58.000000000 +0200 *************** *** 605,667 **** if (nargin == 1) { bool is_arg = false; std::string tmp_arg; size_t i = 0; while (i < fun.length ()) { char c = fun[i++]; ! if (! isalpha (c) || c == '_') if (! is_arg) continue; else if (isdigit (c)) ! tmp_arg.append (1, c); else { - bool have_arg = false; - // Before we do anything remove trailing whitespaces while (i < fun.length () && isspace (c)) c = fun[i++]; ! // Do we have a variable or a function? if (c != '(') { ! for (int j = 0; j < fargs.length (); j++) ! if (tmp_arg == fargs (j)) ! { ! have_arg = true; ! break; ! } ! ! // "i" and "j" aren't valid arguments ! if (! have_arg && tmp_arg != "i" && tmp_arg != "j") ! fargs.append (tmp_arg); } - - tmp_arg = std::string (); - is_arg = false; } else { tmp_arg.append (1, c); is_arg = true; ! if (i == fun.length ()) ! { ! bool have_arg = false; ! ! for (int j = 0; j < fargs.length (); j++) ! if (tmp_arg == fargs (j)) ! { ! have_arg = true; ! break; ! } ! if (! have_arg && tmp_arg != "i" && tmp_arg != "j") ! fargs.append (tmp_arg); ! } } } --- 605,672 ---- if (nargin == 1) { bool is_arg = false; + bool in_string = false; std::string tmp_arg; size_t i = 0; while (i < fun.length ()) { + bool terminate_arg = false; char c = fun[i++]; ! if (in_string) ! { ! if (c == '\'' || c == '\"') ! in_string = false; ! } ! else if (c == '\'' || c == '\"') ! { ! in_string = true; ! if (is_arg) ! terminate_arg = true; ! } ! else if (! isalpha (c) && c != '_') if (! is_arg) continue; else if (isdigit (c)) ! tmp_arg.append (1, c); else { // Before we do anything remove trailing whitespaces while (i < fun.length () && isspace (c)) c = fun[i++]; ! // Do we have a variable or a function? if (c != '(') + terminate_arg = true; + else { ! tmp_arg = std::string (); ! is_arg = false; } } else { tmp_arg.append (1, c); is_arg = true; + } ! if (terminate_arg || (i == fun.length () && is_arg)) ! { ! bool have_arg = false; ! ! for (int j = 0; j < fargs.length (); j++) ! if (tmp_arg == fargs (j)) ! { ! have_arg = true; ! break; ! } ! if (! have_arg && tmp_arg != "i" && tmp_arg != "j") ! fargs.append (tmp_arg); ! ! tmp_arg = std::string (); ! is_arg = false; } }