in_avail() error. Major compliance problem

David Rasmussen pinkfloydhomer@yahoo.com
Thu Oct 25 06:10:00 GMT 2001


There is a problem with in_avail() in libstdc++ 3. I think it is a huge 
problem as lots and lots of existing, compliant code wont work as expected, 
and I suspect an easy fix, although I haven't checked myself.

Example:

#include <iostream>

int main()
{
        std::cout << std::cin.rdbuf()->in_avail() << std::endl;

        return 0;
}

This simple code should write a 0 and exit immediately. This is what happens 
with gcc 2.95.3 and the library that comes with that. With gcc 3.0.2, it is 
hanging blockingly until enter is pressed, and then writes a 1. Code that 
checks the buffer in this way does not expect execution to blocked by input. 
It expects and answer immediately. This is a huge problem, and I can't 
imagine that it hasn't been solved?

Regards,
David



More information about the Libstdc++ mailing list