[fix] Freeing languages in Python

This commit is contained in:
Al
2015-12-31 01:46:04 -05:00
parent cc89b768d8
commit 7bd1336b3b

View File

@@ -138,12 +138,12 @@ static PyObject *py_expand(PyObject *self, PyObject *args, PyObject *keywords) {
}
char **languages = NULL;
size_t num_languages = 0;
if (PySequence_Check(arg_languages)) {
PyObject *seq = PySequence_Fast(arg_languages, "Expected a sequence");
Py_ssize_t len_languages = PySequence_Length(arg_languages);
size_t num_languages = 0;
if (len_languages > 0) {
languages = malloc(len_languages * sizeof(char *));
if (languages == NULL) {
@@ -186,10 +186,13 @@ static PyObject *py_expand(PyObject *self, PyObject *args, PyObject *keywords) {
if (num_languages > 0) {
options.languages = languages;
options.num_languages = (int)num_languages;
} else {
free(languages);
languages = NULL;
}
}
options.num_languages = num_languages;
Py_DECREF(seq);
}
@@ -204,6 +207,9 @@ static PyObject *py_expand(PyObject *self, PyObject *args, PyObject *keywords) {
char **expansions = expand_address(input, options, &num_expansions);
if (languages != NULL) {
for (int i = 0; i < num_languages; i++) {
free(languages[i]);
}
free(languages);
}