From: Max Kellermann Date: Thu, 24 Apr 2025 11:22:55 +0000 (+0200) Subject: rgw/rgw_cksum: work around -Wsometimes-uninitialized X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2afbc2ff9d15e685edb26ce22efd3c377799efb4;p=ceph.git rgw/rgw_cksum: work around -Wsometimes-uninitialized clang complains that `cck3` might not be initialized: ``` /home/jenkins-build/build/workspace/ceph-api/src/rgw/rgw_cksum.cc:74:2: error: variable 'cck3' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] 74 | default: | ^~~~~~~ /home/jenkins-build/build/workspace/ceph-api/src/rgw/rgw_cksum.cc:78:31: note: uninitialized use occurs here 78 | cck3 = rgw::digest::byteswap(cck3); | ^~~~ /home/jenkins-build/build/workspace/ceph-api/src/rgw/rgw_cksum.cc:61:15: note: initialize the variable 'cck3' to silence this warning 61 | uint32_t cck3; | ^ | = 0 ``` The `default:` case however is not reachable because `ck1.type` has already been checked. Adding initializers to `cck3` would only hide potential future bugs, therefore I suggest just bailing out of the function for this unreachable piece of code. With C++23, we could use `std::unreachable()` instead. Signed-off-by: Max Kellermann --- diff --git a/src/rgw/rgw_cksum.cc b/src/rgw/rgw_cksum.cc index e6e4c5b56353..bef606bb9aa5 100644 --- a/src/rgw/rgw_cksum.cc +++ b/src/rgw/rgw_cksum.cc @@ -72,7 +72,9 @@ namespace rgw::cksum { cck3 = crc32iscsi_comb(cck1, cck2, len1); break; default: - break; + /* unreachable (already checked by outer switch/case) */ + // TODO change to std::unreachable() once we are C++23 + goto out; } /* and byteswap */ cck3 = rgw::digest::byteswap(cck3);