LINUX.ORG.RU

История изменений

Исправление mersinvald, (текущая версия) :

Ну и в сишке так. Я про то что если там много освобождать, то приходиться копипастить до черту кода и править его везде.

По этому в сишке юзают такой прием, на что, видимо, и баттхертил ritsufag:

FILE* log_file = fopen(...);
if(!log_file)
    goto end;

FILE* out_file = fopen(...);
if(!out_file)
    goto close_log_file;

FILE* in_file = fopen(...);
if(!in_file)
    goto close_out_file;

// Logic code

fclose(in_file);

close_out_file:
fclose(out_file);

close_log_file:
fcose(log_file);

end:
return errno;

Исходная версия mersinvald, :

Ну и в сишке так. Я про то что если там много освобождать, то приходиться копипастить до черту кода и править его везде.

По этому в сишке юзают такой прием, на что, видимо, и баттхертил ritsufag:

FILE* log_file = fopen(...);
if(!log_file)
    goto end;

FILE* out_file = fopen(...);
if(!out_file)
    goto close_log_file;

FILE* in_file = fopen(...);
if(!in_file)
    goto close_out_file;

// Logic code

fclose(in_file);

close_out_file:
fclose(out_file);

close_log_file:
fcose(log_file);