self.dbuf = self.dbuf[pos:]
             return ret
 
-        buf = [self.dbuf]
-        self.dbuf = ""
+        buf = []
         while True:
             chunk = self._read(self.bufsize)
 
             if '\n' in chunk:
                 dbuf = ''.join(buf)
                 pos = dbuf.index('\n') + 1
-                self.dbuf = dbuf[pos:]
+                self.dbuf = dbuf[pos:] + self.dbuf
                 return dbuf[:pos]
 
     def _read(self, size):
 
             else:
                 os.unlink(path)
 
-        try:
-            deltatar.create_diff_backup("source_dir_diff", "backup_dir2",
+        deltatar.create_diff_backup("source_dir_diff", "backup_dir2",
                                     prev_index_path)
-        except Exception, e:
-            import ipdb; ipdb.set_trace()
 
         # first restore initial backup in target_dir
         tar_filename = deltatar.volume_name_func('backup_dir', True, 0)