]> sigrok.org Git - libsigrokdecode.git/blobdiff - type_decoder.c
type_decoder.c: Fix a compiler warning (-Wswitch-default).
[libsigrokdecode.git] / type_decoder.c
index aa92c3b22490d9e68813661bbd80c7e7575e89e2..e69b3c4e0b11e32f870bf35861a2a0368e09c430 100644 (file)
@@ -125,8 +125,7 @@ static void release_binary(struct srd_proto_data_binary *pdb)
 {
        if (!pdb)
                return;
 {
        if (!pdb)
                return;
-       if (pdb->data)
-               g_free((void *)pdb->data);
+       g_free((void *)pdb->data);
        g_free(pdb);
 }
 
        g_free(pdb);
 }
 
@@ -186,16 +185,18 @@ static int convert_binary(struct srd_decoder_inst *di, PyObject *obj,
                goto err;
        }
 
                goto err;
        }
 
-       pdb = g_malloc(sizeof(struct srd_proto_data_binary));
        if (PyBytes_AsStringAndSize(py_tmp, &buf, &size) == -1)
                goto err;
 
        PyGILState_Release(gstate);
 
        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;
        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;
                return SRD_ERR_MALLOC;
+       }
        memcpy((void *)pdb->data, (const void *)buf, pdb->size);
        pdata->data = pdb;
 
        memcpy((void *)pdb->data, (const void *)buf, pdb->size);
        pdata->data = pdb;
 
@@ -369,17 +370,11 @@ static PyObject *Decoder_put(PyObject *self, PyObject *args)
                break;
        }
 
                break;
        }
 
-       if (py_data)
-               Py_DECREF(py_data);
-
        PyGILState_Release(gstate);
 
        Py_RETURN_NONE;
 
 err:
        PyGILState_Release(gstate);
 
        Py_RETURN_NONE;
 
 err:
-       if (py_data)
-               Py_DECREF(py_data);
-
        PyGILState_Release(gstate);
 
        return NULL;
        PyGILState_Release(gstate);
 
        return NULL;
@@ -501,6 +496,8 @@ static int get_term_type(const char *v)
                return SRD_TERM_EITHER_EDGE;
        case 'n':
                return SRD_TERM_NO_EDGE;
                return SRD_TERM_EITHER_EDGE;
        case 'n':
                return SRD_TERM_NO_EDGE;
+       default:
+               return -1;
        }
 
        return -1;
        }
 
        return -1;
@@ -524,14 +521,13 @@ static PyObject *get_current_pinvalues(const struct srd_decoder_inst *di)
        PyObject *py_pinvalues;
        PyGILState_STATE gstate;
 
        PyObject *py_pinvalues;
        PyGILState_STATE gstate;
 
-       gstate = PyGILState_Ensure();
-
        if (!di) {
                srd_err("Invalid decoder instance.");
        if (!di) {
                srd_err("Invalid decoder instance.");
-               PyGILState_Release(gstate);
                return NULL;
        }
 
                return NULL;
        }
 
+       gstate = PyGILState_Ensure();
+
        py_pinvalues = PyTuple_New(di->dec_num_channels);
 
        for (i = 0; i < di->dec_num_channels; i++) {
        py_pinvalues = PyTuple_New(di->dec_num_channels);
 
        for (i = 0; i < di->dec_num_channels; i++) {
@@ -592,7 +588,7 @@ static int create_term_list(PyObject *py_dict, GSList **term_list)
                                srd_err("Failed to get the value.");
                                goto err;
                        }
                                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);
                        term->type = get_term_type(term_str);
                        term->channel = PyLong_AsLong(py_key);
                        g_free(term_str);
@@ -603,7 +599,7 @@ static int create_term_list(PyObject *py_dict, GSList **term_list)
                                srd_err("Failed to get number of samples to skip.");
                                goto err;
                        }
                                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;
                        term->type = SRD_TERM_SKIP;
                        term->num_samples_to_skip = num_samples_to_skip;
                        term->num_samples_already_skipped = 0;
@@ -766,7 +762,7 @@ static int set_skip_condition(struct srd_decoder_inst *di, uint64_t count)
        GSList *term_list;
 
        condition_list_free(di);
        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;
        term->type = SRD_TERM_SKIP;
        term->num_samples_to_skip = count;
        term->num_samples_already_skipped = 0;
@@ -841,7 +837,9 @@ static PyObject *Decoder_wait(PyObject *self, PyObject *args)
                 * while the termination request still gets signalled.
                 */
                found_match = FALSE;
                 * 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
 
 
                Py_END_ALLOW_THREADS