From: Volker Lendecke Date: Mon, 9 Sep 2019 08:42:59 +0000 (+0200) Subject: smbd: Do boolean short-circuiting X-Git-Tag: talloc-2.3.1~912 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=436be09cfc17bcd26ae438608749a1d47acc1954;p=thirdparty%2Fsamba.git smbd: Do boolean short-circuiting &= does bitwise AND, and does not do boolean short-circuiting if the variable is already 0. As has_other_nonposix_opens() might have its cost, this speeds up closing a handle. Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/source3/smbd/close.c b/source3/smbd/close.c index 06d3f81f5a6..9786c826439 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -350,9 +350,8 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp, } } - delete_file = is_delete_on_close_set(lck, fsp->name_hash); - - delete_file &= !has_other_nonposix_opens(lck, fsp); + delete_file = is_delete_on_close_set(lck, fsp->name_hash) && + !has_other_nonposix_opens(lck, fsp); /* * NT can set delete_on_close of the last open @@ -1156,10 +1155,9 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp, } } - delete_dir = get_delete_on_close_token(lck, fsp->name_hash, - &del_nt_token, &del_token); - - delete_dir &= !has_other_nonposix_opens(lck, fsp); + delete_dir = get_delete_on_close_token( + lck, fsp->name_hash, &del_nt_token, &del_token) && + !has_other_nonposix_opens(lck, fsp); if ((close_type == NORMAL_CLOSE || close_type == SHUTDOWN_CLOSE) && delete_dir) {