When errno is zero, avoid calling strerror() and use "Error" for the

message.
This commit is contained in:
Guido van Rossum 1998-10-14 20:38:13 +00:00
parent b0e5718643
commit e0e59829e0
1 changed files with 8 additions and 3 deletions

View File

@ -282,15 +282,20 @@ PyErr_SetFromErrnoWithFilename(exc, filename)
char *filename;
{
PyObject *v;
char *s;
int i = errno;
#ifdef EINTR
if (i == EINTR && PyErr_CheckSignals())
return NULL;
#endif
if (filename != NULL && Py_UseClassExceptionsFlag)
v = Py_BuildValue("(iss)", i, strerror(i), filename);
if (i == 0)
s = "Error"; /* Sometimes errno didn't get set */
else
v = Py_BuildValue("(is)", i, strerror(i));
s = strerror(i);
if (filename != NULL && Py_UseClassExceptionsFlag)
v = Py_BuildValue("(iss)", i, s, filename);
else
v = Py_BuildValue("(is)", i, s);
if (v != NULL) {
PyErr_SetObject(exc, v);
Py_DECREF(v);