diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 9c25962..e4c5863 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -849,7 +849,7 @@
            can be determined, `mode' is overridden by `fileobj's mode.
            `fileobj' is not closed, when TarFile is closed.
         """
-        self.name = os.path.abspath(name)
+        self.name = name
 
         if len(mode) > 1 or mode not in "raw":
             raise ValueError, "mode must be 'r', 'a' or 'w'"
@@ -861,7 +861,7 @@
             self._extfileobj = False
         else:
             if self.name is None and hasattr(fileobj, "name"):
-                self.name = os.path.abspath(fileobj.name)
+                self.name = fileobj.name
             if hasattr(fileobj, "mode"):
                 self.mode = fileobj.mode
             self._extfileobj = True
@@ -998,18 +998,22 @@
             raise CompressionError, "gzip module is not available"
 
         pre, ext = os.path.splitext(name)
+        pre = os.path.basename(pre)
         if ext == ".tgz":
             ext = ".tar"
         if ext == ".gz":
             ext = ""
-        tarname = os.path.basename(pre + ext)
+        tarname = pre + ext
 
         if fileobj is None:
             fileobj = file(name, mode + "b")
 
+        if mode != "r":
+            name = tarname
+
         try:
-            t = cls.taropen(name, mode,
-                gzip.GzipFile(tarname, mode, compresslevel, fileobj)
+            t = cls.taropen(tarname, mode,
+                gzip.GzipFile(name, mode, compresslevel, fileobj)
             )
         except IOError:
             raise ReadError, "not a gzip file"
@@ -1029,11 +1033,19 @@
         except ImportError:
             raise CompressionError, "bz2 module is not available"
 
+        pre, ext = os.path.splitext(name)
+        pre = os.path.basename(pre)
+        if ext == ".tbz2":
+            ext = ".tar"
+        if ext == ".bz2":
+            ext = ""
+        tarname = pre + ext
+
         if fileobj is not None:
             raise ValueError, "no support for external file objects"
 
         try:
-            t = cls.taropen(name, mode, bz2.BZ2File(name, mode, compresslevel=compresslevel))
+            t = cls.taropen(tarname, mode, bz2.BZ2File(name, mode, compresslevel=compresslevel))
         except IOError:
             raise ReadError, "not a bzip2 file"
         t._extfileobj = False
@@ -1238,7 +1250,8 @@
             arcname = name
 
         # Skip if somebody tries to archive the archive...
-        if self.name is not None and os.path.samefile(name, self.name):
+        if self.name is not None \
+            and os.path.abspath(name) == os.path.abspath(self.name):
             self._dbg(2, "tarfile: Skipped %r" % name)
             return
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 6a3d68d..0171492 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -188,8 +188,6 @@
 Library
 -------
 
-- Patch #1262036: Make tarfile name absolute. Fixes #1257255.
-
 - Patch #827386: Support absolute source paths in msvccompiler.py.
 
 - Patch #1105730: Apply the new implementation of commonprefix in posixpath
