X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoder.c;h=d626bd39db3aae063a6f58502c0df1349fce7ced;hp=b5909168fec43b15528a1510ecc3d87eb750b9f2;hb=94d43b37bd34263f5ed9f7135aac5fe7413c7f07;hpb=159699490ea4bf2495e99dcd5fb18b240d7499df diff --git a/decoder.c b/decoder.c index b590916..d626bd3 100644 --- a/decoder.c +++ b/decoder.c @@ -25,7 +25,6 @@ /* The list of protocol decoders. */ GSList *pd_list = NULL; -GSList *di_list = NULL; /** @@ -78,8 +77,6 @@ int srd_load_decoder(const char *name, struct srd_decoder **dec) int alen, r, i; char **ann; - fprintf(stdout, "%s: %s\n", __func__, name); - /* "Import" the Python module. */ if (!(py_mod = PyImport_ImportModule(name))) { /* NEWREF */ PyErr_Print(); /* Returns void. */ @@ -92,7 +89,7 @@ int srd_load_decoder(const char *name, struct srd_decoder **dec) if (PyErr_Occurred()) PyErr_Print(); /* Returns void. */ Py_XDECREF(py_mod); - fprintf(stderr, "Decoder class not found in PD module %s\n", name); + srd_err("Decoder class not found in PD module %s", name); return SRD_ERR_PYTHON; /* TODO: More specific error? */ } @@ -117,9 +114,6 @@ int srd_load_decoder(const char *name, struct srd_decoder **dec) if ((r = h_str(py_res, "author", &(d->author))) < 0) return r; - if ((r = h_str(py_res, "email", &(d->email))) < 0) - return r; - if ((r = h_str(py_res, "license", &(d->license))) < 0) return r; @@ -134,7 +128,8 @@ int srd_load_decoder(const char *name, struct srd_decoder **dec) /* Convert class annotation attribute to GSList of **char */ d->annotation = NULL; - if ((py_annlist = PyObject_GetAttrString(py_res, "annotation"))) { + if (PyObject_HasAttrString(py_res, "annotation")) { + py_annlist = PyObject_GetAttrString(py_res, "annotation"); if (!PyList_Check(py_annlist)) { srd_err("Protocol decoder module %s annotation should be a list", name); return SRD_ERR_PYTHON; @@ -167,7 +162,11 @@ int srd_unload_decoder(struct srd_decoder *dec) { g_free(dec->id); g_free(dec->name); + g_free(dec->longname); g_free(dec->desc); + g_free(dec->longdesc); + g_free(dec->author); + g_free(dec->license); g_free(dec->func); /* TODO: Free everything in inputformats and outputformats. */