summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/posixmodule.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index a2251b1..2ddcebc 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1904,12 +1904,21 @@ posix_getlogin(PyObject *self, PyObject *args)
PyObject *result = NULL;
if (PyArg_ParseTuple(args, ":getlogin")) {
- char *name = getlogin();
+ char *name;
+ int old_errno = errno;
- if (name == NULL)
- posix_error();
+ errno = 0;
+ name = getlogin();
+ if (name == NULL) {
+ if (errno)
+ posix_error();
+ else
+ PyErr_SetString(PyExc_OSError,
+ "unexpected NULL from getlogin()");
+ }
else
result = PyString_FromString(name);
+ errno = old_errno;
}
return result;
}