comparison src/lread.c @ 5088:207dad9e74f7

Signal an error upon reading 1/0. Thanks to Ben Wing for finding the problem. See xemacs-patches message with ID <870180fe1003021239k77d81203xb7b6f94ce83208b3@mail.gmail.com> and also <d7ba68911002240223u36bb87c2nf4ccfde06b5519cc@mail.gmail.com> in xemacs-beta.
author Jerry James <james@xemacs.org>
date Tue, 02 Mar 2010 13:42:37 -0700
parents 2ade80e8c640
children a48ef26d87ee
comparison
equal deleted inserted replaced
5087:818eeb72e0fb 5088:207dad9e74f7
1980 { 1980 {
1981 /* GMP ratio_set_string has no effect with initial + sign */ 1981 /* GMP ratio_set_string has no effect with initial + sign */
1982 if (*read_ptr == '+') 1982 if (*read_ptr == '+')
1983 read_ptr++; 1983 read_ptr++;
1984 ratio_set_string (scratch_ratio, read_ptr, 0); 1984 ratio_set_string (scratch_ratio, read_ptr, 0);
1985 ratio_canonicalize (scratch_ratio); 1985 if (bignum_sign (ratio_denominator (scratch_ratio)) != 0) {
1986 return Fcanonicalize_number (make_ratio_rt (scratch_ratio)); 1986 ratio_canonicalize (scratch_ratio);
1987 return Fcanonicalize_number (make_ratio_rt (scratch_ratio));
1988 }
1989 return Fsignal (Qinvalid_read_syntax,
1990 list2 (build_msg_string
1991 ("Invalid ratio constant in reader"),
1992 make_string ((Ibyte *) read_ptr, len)));
1987 } 1993 }
1988 #endif 1994 #endif
1989 if (isfloat_string (read_ptr)) 1995 if (isfloat_string (read_ptr))
1990 return make_float (atof (read_ptr)); 1996 return make_float (atof (read_ptr));
1991 } 1997 }