Skip to content

Commit b568efe

Browse files
committed
Fix memory leak and simplify some logic
1 parent b8dda93 commit b568efe

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Modules/getpath.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ getpath_hassuffix(PyObject *Py_UNUSED(self), PyObject *args)
153153
r = Py_True;
154154
}
155155
Py_INCREF(r);
156+
PyMem_Free((void *)suffix);
156157
}
157158
}
158159
return r;
@@ -297,11 +298,11 @@ getpath_joinpath(PyObject *Py_UNUSED(self), PyObject *args)
297298
if (!parts[i]) {
298299
continue;
299300
}
300-
if (i >= first) {
301-
if (final && !final[0]) {
301+
if (i >= first && final) {
302+
if (!final[0]) {
302303
/* final is definitely long enough to fit any individual part */
303304
wcscpy(final, parts[i]);
304-
} else if (final && _Py_add_relfile(final, parts[i], cchFinal) < 0) {
305+
} else if (_Py_add_relfile(final, parts[i], cchFinal) < 0) {
305306
/* if we fail, keep iterating to free memory, but stop adding parts */
306307
PyMem_Free(final);
307308
final = NULL;
@@ -334,12 +335,11 @@ getpath_readlines(PyObject *Py_UNUSED(self), PyObject *args)
334335
return NULL;
335336
}
336337
FILE *fp = _Py_wfopen(path, L"rb");
338+
PyMem_Free((void *)path);
337339
if (!fp) {
338340
PyErr_SetFromErrno(PyExc_OSError);
339-
PyMem_Free((void *)path);
340341
return NULL;
341342
}
342-
PyMem_Free((void *)path);
343343

344344
r = PyList_New(0);
345345
if (!r) {

0 commit comments

Comments
 (0)