diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-07-02 18:44:00 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-07-02 18:44:00 (GMT) |
commit | ee1e06d4975d636cbad949aef8d50de1e57e3715 (patch) | |
tree | 96955948390faa23ac6a3213335848a601da3c59 | |
parent | 762fbd34858f7df608e6da8079bf648bc7d3d8cc (diff) | |
download | cpython-ee1e06d4975d636cbad949aef8d50de1e57e3715.zip cpython-ee1e06d4975d636cbad949aef8d50de1e57e3715.tar.gz cpython-ee1e06d4975d636cbad949aef8d50de1e57e3715.tar.bz2 |
Correct arithmetic in access on Win32. Fixes #1513646.
-rw-r--r-- | Lib/test/test_os.py | 14 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/posixmodule.c | 2 |
3 files changed, 18 insertions, 1 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index ffc9420..faaadec 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -11,6 +11,19 @@ from test import test_support warnings.filterwarnings("ignore", "tempnam", RuntimeWarning, __name__) warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, __name__) +# Tests creating TESTFN +class FileTests(unittest.TestCase): + def setUp(self): + if os.path.exists(test_support.TESTFN): + os.unlink(test_support.TESTFN) + tearDown = setUp + + def test_access(self): + f = os.open(test_support.TESTFN, os.O_CREAT|os.O_RDWR) + os.close(f) + self.assert_(os.access(test_support.TESTFN, os.W_OK)) + + class TemporaryFileTests(unittest.TestCase): def setUp(self): self.files = [] @@ -393,6 +406,7 @@ if sys.platform != 'win32': def test_main(): test_support.run_unittest( + FileTests, TemporaryFileTests, StatAttributeTests, EnvironTests, @@ -52,6 +52,9 @@ Library Extension Modules ----------------- +- Bug #1513646: os.access on Windows now correctly determines write + access, again. + - Bug #1512695: cPickle.loads could crash if it was interrupted with a KeyboardInterrupt. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 6dcf1b0..d8cf40e 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1402,7 +1402,7 @@ finish: return PyBool_FromLong(0); /* Access is possible if either write access wasn't requested, or the file isn't read-only. */ - return PyBool_FromLong(!(mode & 2) || !(attr && FILE_ATTRIBUTE_READONLY)); + return PyBool_FromLong(!(mode & 2) || !(attr & FILE_ATTRIBUTE_READONLY)); #else int res; if (!PyArg_ParseTuple(args, "eti:access", |