]> sigrok.org Git - libsigrokdecode.git/blobdiff - type_decoder.c
type_decoder.c: Fix a memory leak reported by scan-build.
[libsigrokdecode.git] / type_decoder.c
index a01d7852ae85f5e26f35ba8a03733749f89f014b..dfa3fa9e269bb5d5ae984b74290edee775a6dba6 100644 (file)
@@ -194,8 +194,10 @@ static int convert_binary(struct srd_decoder_inst *di, PyObject *obj,
 
        pdb->bin_class = bin_class;
        pdb->size = size;
-       if (!(pdb->data = g_try_malloc(pdb->size)))
+       if (!(pdb->data = g_try_malloc(pdb->size))) {
+               g_free(pdb);
                return SRD_ERR_MALLOC;
+       }
        memcpy((void *)pdb->data, (const void *)buf, pdb->size);
        pdata->data = pdb;
 
@@ -585,7 +587,7 @@ static int create_term_list(PyObject *py_dict, GSList **term_list)
                                srd_err("Failed to get the value.");
                                goto err;
                        }
-                       term = g_malloc0(sizeof(struct srd_term));
+                       term = g_malloc(sizeof(struct srd_term));
                        term->type = get_term_type(term_str);
                        term->channel = PyLong_AsLong(py_key);
                        g_free(term_str);
@@ -596,7 +598,7 @@ static int create_term_list(PyObject *py_dict, GSList **term_list)
                                srd_err("Failed to get number of samples to skip.");
                                goto err;
                        }
-                       term = g_malloc0(sizeof(struct srd_term));
+                       term = g_malloc(sizeof(struct srd_term));
                        term->type = SRD_TERM_SKIP;
                        term->num_samples_to_skip = num_samples_to_skip;
                        term->num_samples_already_skipped = 0;
@@ -759,7 +761,7 @@ static int set_skip_condition(struct srd_decoder_inst *di, uint64_t count)
        GSList *term_list;
 
        condition_list_free(di);
-       term = g_malloc0(sizeof(*term));
+       term = g_malloc(sizeof(*term));
        term->type = SRD_TERM_SKIP;
        term->num_samples_to_skip = count;
        term->num_samples_already_skipped = 0;