]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
buffer: be a bit pedantic about buffer::ptr assignment
authorSage Weil <sage@newdream.net>
Fri, 11 Apr 2008 17:11:32 +0000 (10:11 -0700)
committerSage Weil <sage@newdream.net>
Fri, 11 Apr 2008 21:12:54 +0000 (14:12 -0700)
src/include/buffer.h

index eeb24917813fa03a0d0304e692d76db1ed02d3cf..85dd7b1daa2a285f5c72876828fba97e8b196d58 100644 (file)
@@ -232,13 +232,16 @@ public:
     }
     ptr& operator= (const ptr& p) {
       // be careful -- we need to properly handle self-assignment.
+      if (p._raw)
+       p._raw->nref.inc();                      // inc new
+      release();                                 // dec (+ dealloc) old (if any)
       if (p._raw) {
-       p._raw->nref.inc();                              // inc new
+       _raw = p._raw;
+       _off = p._off;
+       _len = p._len;
+      } else {
+       _off = _len = 0;
       }
-      release();                                 // dec (+ dealloc) old (if any)
-      _raw = p._raw;                               // change my ref
-      _off = p._off;
-      _len = p._len;
       return *this;
     }
     ~ptr() {