ifstream seekg beyond end no devuelve eof en VS 2008 Express?

En VS 2005, tengo un código que se ve así:

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();

El código funcionó bien en VS 2005, pero falla en VS 2008 Express. Por lo que puedo decir, VS 2008 no devuelve eof () después de que el código busca el final del archivo. ¿Me estoy perdiendo de algo? Lo arreglé agregando una comprobación explícita para ver si la ubicación de búsqueda excedía el tamaño del archivo, pero quiero asegurarme de que lo entiendo correctamente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta