Commit 41c83212 authored by Jeremy Hylton's avatar Jeremy Hylton

Fix SF buf #476953: Bad more for opening file gives bad msg.

If fopen() fails with EINVAL it means that the mode argument is
invalid.  Return the mode in the error message instead of the
filename.
parent 20747fa1
......@@ -46,4 +46,15 @@ else:
print "writelines accepted sequence of non-string objects"
f.close()
# verify that we get a sensible error message for bad made argument
bad_mode = "qwerty"
try:
open(TESTFN, bad_mode)
except IOError, msg:
s = str(msg)
if s.find(TESTFN) != -1 or s.find(bad_mode) == -1:
print "bad error message for invalid mode: %s" % s
else:
print "no error for invalid mode: %s" % bad_mode
os.unlink(TESTFN)
......@@ -121,13 +121,17 @@ open_the_file(PyFileObject *f, char *name, char *mode)
if (f->f_fp == NULL) {
#ifdef NO_FOPEN_ERRNO
/* Metroworks only, not testable, so unchanged */
if ( errno == 0 ) {
if (errno == 0) {
PyErr_SetString(PyExc_IOError, "Cannot open file");
Py_DECREF(f);
return NULL;
}
#endif
PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
if (errno == EINVAL)
PyErr_Format(PyExc_IOError, "invalid argument: %s",
mode);
else
PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
f = NULL;
}
return (PyObject *)f;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment