JACHYMKO: takhle, snad jsme se shodli, že možnost nevhodného použití returnu lidmi, co nevědí co dělají, je obecně VLASTNOST všeho v čistém C - je to chyba koncepce toho jazyka, resp. já to už nijak výrazněji nezhoršuji proti stavu, který je i beze mě.
ano, tak trochu mám pocit, že pokud by člověk psal opravdu čistě strukturovaný kód, s využitím systému odchytávání vyjímek, tak asi nebude mít až tolik případů, kdy by měl z jedné funkce více returnů:
1) obecně, pokud je to void funkce a nevrací žádnou hodnotu, tak jí lze nejspíš rozdělit na více dílčích funkcí
2) ad příklad s tou deinicializací - ona správná odpověď asi je, že toto by se napsalo "C-objektově" - tedy všechny ty lokální proměnné by byly ve struct, a ten de-inicializátor by byla funkce, které se předává pointer na struct a kterou lze zavolat z více míst...
2) pokud funkce vrací nějaký výsledek, tak skutečně její vnitřní větvení, ukončené různými návratovými hodnotami - včetně nastavení hodnot indikujících chybu, apod. - by se mohla "sbíhat" před místem, kde se vrací ta návratová hodnota. opravdu jsem takto viděl jiné lidi programovat a nemyslím, že je to špatný přístup.