From 67c8b91dd5a9ea6fd508b7544e397154ba330142 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 7 Mar 2011 05:34:23 -0800 Subject: [PATCH] buffer.h: push_back,push_front of an empty buffer pointer should be noop Also adds an assert to copy to ensure that bufferlist iterator copy completes. Signed-off-by: Samuel Just --- src/include/buffer.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/include/buffer.h b/src/include/buffer.h index 0905e11883bdf..825698c928b78 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -635,6 +635,7 @@ public: while (len > 0) { if (p == ls->end()) throw end_of_buffer(); + assert(p->length() > 0); unsigned howmuch = p->length() - p_off; if (len < howmuch) howmuch = len; @@ -787,22 +788,22 @@ public: last_p = begin(); } void push_front(ptr& bp) { + if (bp.length() == 0) return; _buffers.push_front(bp); _len += bp.length(); } void push_front(raw *r) { ptr bp(r); - _buffers.push_front(bp); - _len += bp.length(); + push_front(bp); } void push_back(const ptr& bp) { + if (bp.length() == 0) return; _buffers.push_back(bp); _len += bp.length(); } void push_back(raw *r) { ptr bp(r); - _buffers.push_back(bp); - _len += bp.length(); + push_back(bp); } void zero() { for (std::list::iterator it = _buffers.begin(); -- 2.39.5