mirror of
https://github.com/python/cpython.git
synced 2025-07-29 22:24:49 +00:00
Issue #1309352: fcntl now converts its third arguments to a C long
rather
than an int, which makes some operations possible under 64-bit Linux (e.g. DN_MULTISHOT with F_NOTIFY).
This commit is contained in:
parent
4fe3858991
commit
d49e375eed
3 changed files with 22 additions and 3 deletions
|
@ -61,7 +61,7 @@ class TestFcntl(unittest.TestCase):
|
|||
self.f = None
|
||||
|
||||
def tearDown(self):
|
||||
if not self.f.closed:
|
||||
if self.f and not self.f.closed:
|
||||
self.f.close()
|
||||
unlink(TESTFN)
|
||||
|
||||
|
@ -85,6 +85,21 @@ class TestFcntl(unittest.TestCase):
|
|||
rv = fcntl.fcntl(self.f, fcntl.F_SETLKW, lockdata)
|
||||
self.f.close()
|
||||
|
||||
def test_fcntl_64_bit(self):
|
||||
# Issue #1309352: fcntl shouldn't fail when the third arg fits in a
|
||||
# C 'long' but not in a C 'int'.
|
||||
try:
|
||||
cmd = fcntl.F_NOTIFY
|
||||
# This flag is larger than 2**31 in 64-bit builds
|
||||
flags = fcntl.DN_MULTISHOT
|
||||
except AttributeError:
|
||||
self.skipTest("F_NOTIFY or DN_MULTISHOT unavailable")
|
||||
fd = os.open(os.path.dirname(os.path.abspath(TESTFN)), os.O_RDONLY)
|
||||
try:
|
||||
fcntl.fcntl(fd, cmd, flags)
|
||||
finally:
|
||||
os.close(fd)
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(TestFcntl)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue