]> sigrok.org Git - libsigrokdecode.git/blobdiff - type_decoder.c
Avoid clobbering class variables when setting instance options
[libsigrokdecode.git] / type_decoder.c
index 16675bcb9f0a136560d15c1cb70ddba91a5e3daf..c8ef09e1021b4be12335eac5af61235f445330e2 100644 (file)
@@ -95,7 +95,7 @@ static PyObject *Decoder_put(PyObject *self, PyObject *args)
        struct srd_proto_data *pdata;
        uint64_t start_sample, end_sample;
        int output_id;
-       void (*cb)();
+       struct srd_pd_callback *cb;
 
        if (!(di = srd_inst_find_by_obj(NULL, self))) {
                /* Shouldn't happen. */
@@ -135,14 +135,14 @@ static PyObject *Decoder_put(PyObject *self, PyObject *args)
        switch (pdo->output_type) {
        case SRD_OUTPUT_ANN:
                /* Annotations are only fed to callbacks. */
-               if ((cb = srd_pd_output_callback_find(pdo->output_type))) {
+               if ((cb = srd_pd_output_callback_find(di->sess, pdo->output_type))) {
                        /* Annotations need converting from PyObject. */
                        if (convert_pyobj(di, data, &pdata->ann_format,
                                          (char ***)&pdata->data) != SRD_OK) {
                                /* An error was already logged. */
                                break;
                        }
-                       cb(pdata);
+                       cb->cb(pdata, cb->cb_data);
                }
                break;
        case SRD_OUTPUT_PROTO: