Здравствуйте, lpd, Вы писали:
lpd>Модифицировать функцию, не читая ее код, и не понимая что она делает — это действительно высший пилотаж, мне такое не под силу.
Между тем такое происходит сплошь и рядом: есть функция, которая перед выполнением некого главного действия X выполняет серию проверок и подготовительных действий P1, P2, ..., Pn. Спустя какое-то время выясняется, что между Pi и P(i+1) нужно вставить еще и P(i'). Которое может завершится неудачно и в случае ошибки нужно сделать преждевременный возврат.
Когда пишется нормальный код, то можно просто сделать return.
Когда все, что есть в вашем распоряжении -- это чистая ламповая Сишечка с goto err, то да, пока не проштудируешь простыню на 10 экранов, добавить P(i') не получится.
И, что характерно, штудируют не все, и не всегда тщательно.
lpd>Ну и в конкретно этом примере RAII помог бы слабо, т.к. это не освобождение ресурса, а вызов специальных функций, и в лоб по С++ному ничего тут не сделать.
Это говорит лишь о том, что вы слабо себе представляете, что в современном C++ можно делать с помощью RAII (да и в старом, только там несколько многословнее все).