diff options
author | Bert Vermeulen <bert@biot.com> | 2013-05-05 17:20:13 +0200 |
---|---|---|
committer | Bert Vermeulen <bert@biot.com> | 2013-05-05 17:20:13 +0200 |
commit | e592ac8917d17665119b3647b5eae27fa387d6de (patch) | |
tree | 03bcde592fa8f7e87c52c324427eb65c5e577df9 | |
parent | 47dfa77d472795e6b5ad2ec3f3588a9619aec70f (diff) | |
download | libsigrokdecode-e592ac8917d17665119b3647b5eae27fa387d6de.tar.gz libsigrokdecode-e592ac8917d17665119b3647b5eae27fa387d6de.zip |
Fix various memory leaks
-rw-r--r-- | controller.c | 7 | ||||
-rw-r--r-- | decoder.c | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/controller.c b/controller.c index 9b8d35b..2f76665 100644 --- a/controller.c +++ b/controller.c @@ -229,10 +229,10 @@ SRD_PRIV int srd_decoder_searchpath_add(const char *path) srd_dbg("Adding '%s' to module path.", path); new_path = g_string_sized_new(256); - g_string_assign(new_path, g_strdup(path)); + g_string_assign(new_path, path); py_cur_path = PySys_GetObject("path"); for (i = 0; i < PyList_Size(py_cur_path); i++) { - g_string_append(new_path, g_strdup(G_SEARCHPATH_SEPARATOR_S)); + g_string_append(new_path, G_SEARCHPATH_SEPARATOR_S); py_item = PyList_GetItem(py_cur_path, i); if (!PyUnicode_Check(py_item)) /* Shouldn't happen. */ @@ -240,6 +240,7 @@ SRD_PRIV int srd_decoder_searchpath_add(const char *path) if (py_str_as_str(py_item, &item) != SRD_OK) continue; g_string_append(new_path, item); + g_free(item); } /* Convert to wide chars. */ @@ -401,6 +402,7 @@ SRD_API int srd_inst_option_set(struct srd_decoder_inst *di, */ if (PyDict_SetItemString(py_di_options, key, py_optval) == -1) goto err_out; + g_free(key); } ret = SRD_OK; @@ -816,6 +818,7 @@ SRD_PRIV void srd_inst_free(struct srd_decoder_inst *di) g_free(pdo); } g_slist_free(di->pd_output); + g_free(di); } /** @private */ @@ -217,6 +217,7 @@ static int get_options(struct srd_decoder *d) } g_variant_ref_sink(o->def); d->options = g_slist_append(d->options, o); + g_free(key); } Py_DecRef(py_keys); Py_DecRef(py_values); @@ -493,7 +494,7 @@ SRD_API int srd_decoder_unload(struct srd_decoder *dec) /* The module itself. */ Py_XDECREF(dec->py_mod); - /* TODO: (g_)free dec itself? */ + g_free(dec); return SRD_OK; } |