--- /dev/null
+Fix memory leaks in :mod:`readline` functions
+:func:`~readline.read_init_file`, :func:`~readline.read_history_file`,
+:func:`~readline.write_history_file`, and
+:func:`~readline.append_history_file` when :c:func:`PySys_Audit` fails.
if (!PyUnicode_FSConverter(filename_obj, &filename_bytes))
return NULL;
if (PySys_Audit("open", "OCi", filename_obj, 'r', 0) < 0) {
+ Py_DECREF(filename_bytes);
return NULL;
}
errno = rl_read_init_file(PyBytes_AS_STRING(filename_bytes));
if (!PyUnicode_FSConverter(filename_obj, &filename_bytes))
return NULL;
if (PySys_Audit("open", "OCi", filename_obj, 'r', 0) < 0) {
+ Py_DECREF(filename_bytes);
return NULL;
}
errno = read_history(PyBytes_AS_STRING(filename_bytes));
return NULL;
filename = PyBytes_AS_STRING(filename_bytes);
if (PySys_Audit("open", "OCi", filename_obj, 'w', 0) < 0) {
+ Py_DECREF(filename_bytes);
return NULL;
}
} else {
return NULL;
filename = PyBytes_AS_STRING(filename_bytes);
if (PySys_Audit("open", "OCi", filename_obj, 'a', 0) < 0) {
+ Py_DECREF(filename_bytes);
return NULL;
}
} else {