Opened 9 years ago

Closed 9 years ago

Last modified 8 years ago

#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 9 years ago by felix winkelmann

Status: newaccepted

comment:2 Changed 9 years ago by felix winkelmann

Component: compilercore libraries

comment:3 Changed 9 years ago by felix winkelmann

Resolution: fixed
Status: acceptedclosed

Fixed in commit 90ff06e (master).

comment:4 Changed 8 years ago by felix winkelmann

Milestone: 4.6.0

Milestone 4.6.0 deleted

Note: See TracTickets for help on using tickets.