From d4e8230777053a5e149fb3af44e45d4b4649e083 Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Mon, 15 Dec 2003 08:53:28 +0000 Subject: [PATCH] LCM may be called without any argument --- src/c/num_arith.d | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/c/num_arith.d b/src/c/num_arith.d index dd97f008b..6bf6263f0 100644 --- a/src/c/num_arith.d +++ b/src/c/num_arith.d @@ -901,10 +901,15 @@ one_minus(cl_object x) } } -@(defun lcm (lcm &rest nums) +@(defun lcm (&rest nums) + cl_object lcm; @ + if (narg == 0) + @(return MAKE_FIXNUM(0)) /* INV: get_gcd() checks types. By placing `numi' before `lcm' in this call, we make sure that errors point to `numi' */ + lcm = cl_va_arg(nums); + assert_type_integer(lcm); while (narg-- > 1) { cl_object numi = cl_va_arg(nums); cl_object t = number_times(lcm, numi); @@ -912,6 +917,5 @@ one_minus(cl_object x) if (g != MAKE_FIXNUM(0)) lcm = number_divide(t, g); } - assert_type_integer(lcm); @(return (number_minusp(lcm) ? number_negate(lcm) : lcm)) @)