Opened 12 years ago
Closed 12 years ago
#1051 closed defect (fixed)
Implementation of C_flonum_rat is probably buggy
| Reported by: | felix winkelmann | Owned by: | sjamaan |
|---|---|---|---|
| Priority: | major | Milestone: | someday |
| Component: | core libraries | Version: | 4.8.x |
| Keywords: | flonum_rat | Cc: | |
| Estimated difficulty: |
Description
It seems that a tagged flonum is interpreted as an integer:
void C_ccall C_flonum_rat(C_word c, C_word closure, C_word k, C_word n)
{
double frac, tmp, numer, denom, factor, fn = C_flonum_magnitude(n);
double r1a, r1b;
double ga, gb;
C_word ab[WORDS_PER_FLONUM * 2], *ap = ab;
int i = 0;
if (n < 1 && n > -1) { <---
factor = pow(2, DBL_MANT_DIG);
fn *= factor;
} else {
factor = 1;
}
:
In the code snippet above n is access directly, it may be the case that fn is actually meant to be tested.
Note: See
TracTickets for help on using
tickets.

Fixed in 18ce467a28f4f180b5efebdaeb167498c1b19508