summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2006-07-02 18:44:00 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2006-07-02 18:44:00 (GMT)
commitee1e06d4975d636cbad949aef8d50de1e57e3715 (patch)
tree96955948390faa23ac6a3213335848a601da3c59
parent762fbd34858f7df608e6da8079bf648bc7d3d8cc (diff)
downloadcpython-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.py14
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/posixmodule.c2
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,
diff --git a/Misc/NEWS b/Misc/NEWS
index 641b7a7..a6b4c2e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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",