diff options
| author | Karl Heuer <kwzh@gnu.org> | 1994-11-16 03:37:56 +0000 |
|---|---|---|
| committer | Karl Heuer <kwzh@gnu.org> | 1994-11-16 03:37:56 +0000 |
| commit | a2ad3e19d3aea7628b69630acea5badedf0f12f1 (patch) | |
| tree | 9003e7a3d77549097d92204183604b32afb647e7 /src | |
| parent | cec4abce27a2de7ce5825838b313f12b9c48a996 (diff) | |
| download | emacs-a2ad3e19d3aea7628b69630acea5badedf0f12f1.tar.gz | |
(Flength): Don't call Farray_length, just use size field.
Diffstat (limited to 'src')
| -rw-r--r-- | src/fns.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/fns.c b/src/fns.c index e05afe1a776..7df032086a8 100644 --- a/src/fns.c +++ b/src/fns.c @@ -101,29 +101,28 @@ A byte-code function object is also allowed.") register int i; retry: - if (VECTORP (obj) || STRINGP (obj) || COMPILEDP (obj)) - return Farray_length (obj); + if (STRINGP (obj)) + XSETFASTINT (val, XSTRING (obj)->size); + else if (VECTORP (obj) || COMPILEDP (obj)) + XSETFASTINT (val, XVECTOR (obj)->size); else if (CONSP (obj)) { - for (i = 0, tail = obj; !NILP(tail); i++) + for (i = 0, tail = obj; !NILP (tail); i++) { QUIT; tail = Fcdr (tail); } XSETFASTINT (val, i); - return val; - } - else if (NILP(obj)) - { - XSETFASTINT (val, 0); - return val; } + else if (NILP (obj)) + XSETFASTINT (val, 0); else { obj = wrong_type_argument (Qsequencep, obj); goto retry; } + return val; } DEFUN ("string-equal", Fstring_equal, Sstring_equal, 2, 2, 0, |
