X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=type_decoder.c;h=e69b3c4e0b11e32f870bf35861a2a0368e09c430;hp=a61a475f29cfeef981d5cae1f5aacc36938c0117;hb=4e7ccaf9f133106786fd85a432ae23e11d9dcea2;hpb=35c10c0e24881de50b3391b1f3ecc9e43aa361b3;ds=sidebyside diff --git a/type_decoder.c b/type_decoder.c index a61a475..e69b3c4 100644 --- a/type_decoder.c +++ b/type_decoder.c @@ -125,8 +125,7 @@ static void release_binary(struct srd_proto_data_binary *pdb) { if (!pdb) return; - if (pdb->data) - g_free((void *)pdb->data); + g_free((void *)pdb->data); g_free(pdb); } @@ -186,16 +185,18 @@ static int convert_binary(struct srd_decoder_inst *di, PyObject *obj, goto err; } - pdb = g_malloc(sizeof(struct srd_proto_data_binary)); if (PyBytes_AsStringAndSize(py_tmp, &buf, &size) == -1) goto err; PyGILState_Release(gstate); + pdb = g_malloc(sizeof(struct srd_proto_data_binary)); 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; @@ -495,6 +496,8 @@ static int get_term_type(const char *v) return SRD_TERM_EITHER_EDGE; case 'n': return SRD_TERM_NO_EDGE; + default: + return -1; } return -1; @@ -834,7 +837,9 @@ static PyObject *Decoder_wait(PyObject *self, PyObject *args) * while the termination request still gets signalled. */ found_match = FALSE; - ret = process_samples_until_condition_match(di, &found_match); + + /* Ignore return value for now, should never be negative. */ + (void)process_samples_until_condition_match(di, &found_match); Py_END_ALLOW_THREADS