Hi all:

I think I've found a bug in the version of atof that ships with the latest/last 
version of Winavr. 

When I pass it a string with a floating point number, the number it returns is 
incorrect.

For example, I can pass it '-1033\0', and the result is something like -15640. 
Similarly, I can pass it '0.33', and the result is 16000 and something. It 
seems that the only thing it gets right are the sign and when the input string 
is '0.00'.

I have reimplemented atof as my_atof, and it works perfectly.

Note that this incorrect behaviour is also apparent in avr-gcc shipped with 
ubuntu 10.04.2.

An example of code that demonstrates the behaviour is below:

float atof_test(void){
        static char buf[10];
        char* pbuf = buf;

        buf[0] = '-';
        buf[1] = '0';
        buf[2] = '.';
        buf[3] = '3';
        buf[4] = '3';
        buf[5] = '\0';

        return atof(pbuf);
}

Cheers,
--
Matt van de Werken
Electronics Engineer
Mining Geoscience, CSIRO Earth Science and Resource Engineering
1 Technology Ct   Pullenvale   QLD   4069
P: 07 3327 4142  F: 07 3327 4455  M: 0400 538 608
E: [email protected]
"Those that do not understand UNIX are condemned to reinvent it, poorly"
  - Henry Spencer
_______________________________________________
AVR-chat mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-chat

Reply via email to