From 6fa67775033d99a8a0e5b978d37ef00aed6c1fbe Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 20 Sep 2011 04:04:33 +0200 Subject: [PATCH] os.statvfs() encodes the filename to the filesystem encoding --- Modules/posixmodule.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 2fc509d315..25e7f0dbef 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -8071,16 +8071,20 @@ Perform a statvfs system call on the given path."); static PyObject * posix_statvfs(PyObject *self, PyObject *args) { - char *path; + PyObject *path; int res; struct statvfs st; - if (!PyArg_ParseTuple(args, "s:statvfs", &path)) + if (!PyArg_ParseTuple(args, "O&:statvfs", PyUnicode_FSConverter, &path)) return NULL; Py_BEGIN_ALLOW_THREADS - res = statvfs(path, &st); + res = statvfs(PyBytes_AS_STRING(path), &st); Py_END_ALLOW_THREADS - if (res != 0) - return posix_error_with_filename(path); + if (res != 0) { + posix_error_with_filename(PyBytes_AS_STRING(path)); + Py_DECREF(path); + return NULL; + } + Py_DECREF(path); return _pystatvfs_fromstructstatvfs(st); } -- 2.49.0