NTSTATUS DoSomething()
{
NSTATUS Status;
...
Status = NtXXX();
if (!NT_SUCCESS(Status))
goto done;
Status = NtYYY();
if (!NT_SUCCESS(Status))
goto cleanXXX;
Status = NtZZZ();
if (!NT_SUCCESS(Status))
goto cleanYYY;
cleanZZZ:
cleanupZZZ();
cleanYYY:
cleanupYYY();
cleanXXX:
cleanupXXX();
done:
return Status;
}Thomas
NTSTATUS DoSomething()
{
NSTATUS Status = NtXXX();
if (NT_SUCCESS(Status)) {
Status = NtYYY();
if (!NT_SUCCESS(Status))
cleanupXXX();
Status = NtZZZ();
if (!NT_SUCCESS(Status))
cleanupYYY();
}
return Status;
}
i think thats the most simple and easy to read
but in the end is´ent it not a littel waste of time
discusse old functions their need rewrite anyway..?
Thomas