Mercurial > hg > octave-lyh
comparison libinterp/interpfcn/utils.cc @ 15435:13ffb3130b2f
Fix isvarname to return false if input is not a string (bug #37389)
* libinterp/interpfcn/utils.cc (isvarname): Redraft function to
return false when input is not a string rather than printing
an error.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 21 Sep 2012 22:44:10 -0700 |
parents | 9020dddc925a |
children | 049e8bbff782 |
comparison
equal
deleted
inserted
replaced
15434:e1f59fd57756 | 15435:13ffb3130b2f |
---|---|
97 @deftypefn {Built-in Function} {} isvarname (@var{name})\n\ | 97 @deftypefn {Built-in Function} {} isvarname (@var{name})\n\ |
98 Return true if @var{name} is a valid variable name.\n\ | 98 Return true if @var{name} is a valid variable name.\n\ |
99 @seealso{iskeyword, exist, who}\n\ | 99 @seealso{iskeyword, exist, who}\n\ |
100 @end deftypefn") | 100 @end deftypefn") |
101 { | 101 { |
102 octave_value retval; | 102 octave_value retval = false; |
103 | 103 |
104 int argc = args.length () + 1; | 104 int nargin = args.length (); |
105 | 105 |
106 string_vector argv = args.make_argv ("isvarname"); | 106 if (nargin != 1) |
107 | |
108 if (error_state) | |
109 return retval; | |
110 | |
111 if (argc == 2) | |
112 retval = valid_identifier (argv[1]) && ! is_keyword (argv[1]); | |
113 else | |
114 print_usage (); | 107 print_usage (); |
108 else if (args(0).is_string ()) | |
109 { | |
110 std::string varname = args(0).string_value (); | |
111 retval = valid_identifier (varname) && ! is_keyword (varname); | |
112 } | |
115 | 113 |
116 return retval; | 114 return retval; |
117 } | 115 } |
118 | 116 |
119 /* | 117 /* |
120 %!assert (isvarname ("foo"), true) | 118 %!assert (isvarname ("foo"), true) |
121 %!assert (isvarname ("_foo"), true) | 119 %!assert (isvarname ("_foo"), true) |
122 %!assert (isvarname ("_1"), true) | 120 %!assert (isvarname ("_1"), true) |
123 %!assert (isvarname ("1foo"), false) | 121 %!assert (isvarname ("1foo"), false) |
124 %!assert (isvarname (""), false) | 122 %!assert (isvarname (""), false) |
123 %!assert (isvarname (12), false) | |
125 | 124 |
126 %!error isvarname () | 125 %!error isvarname () |
127 %!error isvarname ("foo", "bar"); | 126 %!error isvarname ("foo", "bar"); |
128 */ | 127 */ |
129 | 128 |