grad bei Abfragen ist es auch ganz geschickt wenn es nicht so tut wie erwartet mal die Bedingungen komplett auszuschreiben. Also in deinem Fall
while( flag == 1 ) { foo; }
Bedingungen vertauschen ist ein netter Fehler, das kommen dann immer solche Ergebnisse raus.