Summary
> < >= <= = 2-arg compiler rewrites are broken
Metadata
- Id: 7d8b0ca4bd58b46c8e764bdee9fbe74729fbed4f
- Trac id: 235
- Type: defect
- Reporter: zbigniew
- Owner: felix
- Cc:
- Status: closed
- Component: core libraries
- Estimated difficulty:
- Resolution: fixed
- Priority: critical
- Milestone:
- Version: 4.5.0
- Changetime: 2011-04-04 08:31:00 UTC
- Created: 2010-05-14 03:07:35 UTC
- Keywords:
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.
Changes and comments
[2010-05-14 23:38:25 UTC] felix changed status from new to accepted
[2010-05-14 23:38:35 UTC] felix changed component from compiler to core libraries
[2010-05-16 00:05:25 UTC] felix changed status from accepted to closed
[2010-05-16 00:05:25 UTC] felix set resolution to fixed
[2010-05-16 00:05:25 UTC] felix wrote:
Fixed in commit 90ff06e (master).
[2011-04-04 08:31:00 UTC] felix removed milestone 4.6.0
[2011-04-04 08:31:00 UTC] felix wrote:
Milestone 4.6.0 deleted