From: myoungwon oh Date: Wed, 12 Sep 2018 12:01:05 +0000 (+0900) Subject: src/common/buffer.cc: remove unnecessary copy in sha1() X-Git-Tag: v14.0.1~268^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f3d21c81771f96f03c099a0ee16d7c91d3b32d82;p=ceph-ci.git src/common/buffer.cc: remove unnecessary copy in sha1() Signed-off-by: Myoungwon Oh --- diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 731a5e5c17b..b88e74a9caf 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -2476,21 +2476,17 @@ using ceph::crypto::SHA1; boost::optional buffer::list::sha1() { ptr nb; - unsigned pos = 0; unsigned char fingerprint[CEPH_CRYPTO_SHA1_DIGESTSIZE]; if (_len == 0) { return boost::none; } nb = buffer::create(_len); + SHA1 sha1_gen; for (std::list::iterator it = _buffers.begin(); it != _buffers.end(); ++it) { - nb.copy_in(pos, it->length(), it->c_str(), false); - pos += it->length(); + sha1_gen.Update((const unsigned char *)it->c_str(), it->length()); } - int size = length(); - SHA1 sha1_gen; - sha1_gen.Update((const unsigned char *)nb.c_str(), size); sha1_gen.Final(fingerprint); sha1_digest_t fp_t(fingerprint); return fp_t;