Index: Lib/tarfile.py =================================================================== --- Lib/tarfile.py (revision 81563) +++ Lib/tarfile.py (working copy) @@ -1884,7 +1884,7 @@ tarinfo.mode = stmd tarinfo.uid = statres.st_uid tarinfo.gid = statres.st_gid - if stat.S_ISREG(stmd): + if stat.S_ISREG(stmd) and type != LNKTYPE: tarinfo.size = statres.st_size else: tarinfo.size = 0L Index: Lib/test/test_tarfile.py =================================================================== --- Lib/test/test_tarfile.py (revision 81563) +++ Lib/test/test_tarfile.py (working copy) @@ -662,12 +662,15 @@ if hasattr(os, "link"): link = os.path.join(TEMPDIR, "link") target = os.path.join(TEMPDIR, "link_target") - open(target, "wb").close() + f = open(target, "wb") + f.write("test_link_size") + f.close() os.link(target, link) try: tar = tarfile.open(tmpname, self.mode) - tarinfo = tar.gettarinfo(link) - self.assertEqual(tarinfo.size, 0) + linkinfo = tar.gettarinfo(link) + targetinfo = tar.gettarinfo(target) + self.assertTrue(linkinfo.size == 0 or targetinfo.size == 0) finally: os.remove(target) os.remove(link)