ifstream seekg poza końcem nie zwraca eof w VS 2008 Express?

W VS 2005 mam kod, który wygląda tak:

ifs.open("foo");
while (!ifs.eof())
{
    ifs.read(&bar,sizeof(bar));
    loc = ifs.tellg();
    loc += bar.dwHeaderSize;
    // four byte boundary padding
    if ((loc % 4) != 0)
        loc += 4 - (loc % 4);
    ifs.seekg(loc,ios::beg);
}
ifs.close();

Kod działa dobrze w VS 2005, ale nie działa w VS 2008 Express. Z tego, co mogę powiedzieć, VS 2008 nie zwraca eof () po tym, jak kod znajduje się na końcu pliku. Czy czegoś mi brakuje? Naprawiłem to, dodając jawne sprawdzenie, aby sprawdzić, czy lokalizacja wyszukiwania przekroczyła rozmiar pliku, ale chcę mieć pewność, że poprawnie rozumiem ifstream.