From: Tianshan Qu Date: Tue, 21 May 2019 10:50:06 +0000 (+0800) Subject: rgw: fix list bucket with start maker and delimiter '/' will miss next object with... X-Git-Tag: v14.2.2~5^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e9b13b0a2e5413dafc5ea1074b2a6a53d8696e62;p=ceph.git rgw: fix list bucket with start maker and delimiter '/' will miss next object with char '0' '/' + 1 = '0', and the start marker will be skipped, so it will miss the '0' object. Fixes: http://tracker.ceph.com/issues/39989 Signed-off-by: Tianshan Qu (cherry picked from commit 43b5264c7d61ae3be56d68f131b544edee307a46) Conflicts: src/rgw/rgw_rados.cc - nautilus lacks "unsigned" in the line "unsigned char e = delim.back();" --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 4441ff0f577..ff7e5ac0942 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2436,15 +2436,8 @@ int RGWRados::Bucket::update_bucket_id(const string& new_bucket_id) static inline std::string after_delim(std::string_view delim) { // assert: ! delim.empty() - char e = delim.back(); - delim.remove_suffix(1); std::string result{delim.data(), delim.length()}; - if (e < 255) { - result += char(++e); - } else { - result += e; - result += char(255); - } + result += char(255); return result; }