S>Тем более, что внутри вложенного while в секции else вроде как continue и не к чему... Говнокодом попахивает.
Нет, приятель, это борьба с оптимизирующими компиляторами. Он там, в том месте, запросто может завершить цикл когда это не нужно. Вы просто не знаете что скрывается за той функцией, стоящей во главе while.
S>Напрашивается вынесение внутреннего while в отдельную функцию или в локальную лямбду.
Лямбда будет выглядет также, только более уродливо и громоздко. А отдельная функция в том случае-тот самый реальный потенциальный источник багов, так как там транзакция к стораджу, и раскидывать логику по разным функиям-это гораздо более опасно, чем две неинициализированные локальные переменные. Короче, Вы цепляетесь к ничего не значящим мелочам, но допускаете ошибки значительно более серьёзные.