if (recurse->state.status == F_continue) continue;
} // for
- recurse->state.status = f_directory_stream_close(stream);
+ {
+ const f_status_t status_original = recurse->state.status;
- if (F_status_is_error(recurse->state.status)) {
- private_inline_fl_directory_do_handle(recurse, recurse->path, f_directory_recurse_do_flag_clean_list_d);
- if (F_status_is_error(recurse->state.status)) return;
+ recurse->state.status = f_directory_stream_close(stream);
- if (recurse->state.status != F_done) {
- recurse->state.status = F_okay;
+ if (F_status_is_error(recurse->state.status)) {
+ private_inline_fl_directory_do_handle(recurse, recurse->path, f_directory_recurse_do_flag_clean_list_d);
+ if (F_status_is_error(recurse->state.status)) return;
+
+ if (recurse->state.status != F_done) {
+ recurse->state.status = F_okay;
+ }
+ }
+
+ if (F_status_is_error(status_original) || F_status_is_error_not(recurse->state.status)) {
+ recurse->state.status = status_original;
}
}