#235 closed defect (fixed)
> < >= <= = 2-arg compiler rewrites are broken
Reported by: | Jim Ursetto | Owned by: | felix winkelmann |
---|---|---|---|
Priority: | critical | Milestone: | |
Component: | core libraries | Version: | 4.5.0 |
Keywords: | Cc: | ||
Estimated difficulty: |
Description
The implementation of C_i_greaterp does not throw an error when the first argument is not a number.
See example at http://paste.lisp.org/display/99206
I believe this is because it does not check the argument type of x, only y. Instead if x is not a fixnum or flonum, C_i_greaterp just returns #f.
In other words it is missing:
else barf(C_BAD_ARGUMENT_TYPE_ERROR, ">", x);
I also believe C_i_nequalp, C_i_greaterp, C_i_lessp, C_i_greater_or_equalp, C_i_less_or_equalp are all affected.
Change History (4)
comment:1 Changed 15 years ago by
Status: | new → accepted |
---|
comment:2 Changed 15 years ago by
Component: | compiler → core libraries |
---|
comment:3 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Note: See
TracTickets for help on using
tickets.
Fixed in commit 90ff06e (master).