[Bug #812325 ] tarfile.close() can write out more bytes to the output
   than are specified by the buffer size.  The patch calls .__write()
   to ensure that any full blocks are written out.
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 26f9c7f..6f44146 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -353,6 +353,7 @@
         if self.mode == "w" and self.buf:
             if self.type != "tar":
                 self.buf += self.cmp.flush()
+            self.__write("")            # Write remaining blocks to output
             self.fileobj.write(self.buf)
             self.buf = ""
             if self.type == "gz":