while (millis() - start < 1000)
{
if (feedgps())
newdata = true;
}
if (newdata) {
gpsdump(gps);
}
More rubbish. Doing nothing but reading serial data for one second, and assuming that that somehow means that you got exactly one sentence is a poor assumption.