]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoder.c
uart: Use human-readable names for annotation classes.
[libsigrokdecode.git] / decoder.c
index 2eb9a573136cb206bffc4c30a052b2ebb9c76f49..cef4f299aea927d76d64adbb8ba9dcc39a2bf927 100644 (file)
--- a/decoder.c
+++ b/decoder.c
@@ -171,6 +171,7 @@ static void decoder_free(struct srd_decoder *dec)
 
        g_slist_free_full(dec->outputs, g_free);
        g_slist_free_full(dec->inputs, g_free);
+       g_slist_free_full(dec->tags, g_free);
        g_free(dec->license);
        g_free(dec->desc);
        g_free(dec->longname);
@@ -802,6 +803,11 @@ SRD_API int srd_decoder_load(const char *module_name)
                goto err_out;
        }
 
+       if (py_attr_as_strlist(d->py_dec, "tags", &(d->tags)) != SRD_OK) {
+               fail_txt = "missing or malformed 'tags' attribute";
+               goto err_out;
+       }
+
        /* All options and their default values. */
        if (get_options(d) != SRD_OK) {
                fail_txt = "cannot get options";
@@ -863,7 +869,7 @@ err_out:
 /**
  * Return a protocol decoder's docstring.
  *
- * @param dec The loaded protocol decoder.
+ * @param dec The loaded protocol decoder. Must not be NULL.
  *
  * @return A newly allocated buffer containing the protocol decoder's
  *         documentation. The caller is responsible for free'ing the buffer.
@@ -879,7 +885,7 @@ SRD_API char *srd_decoder_doc_get(const struct srd_decoder *dec)
        if (!srd_check_init())
                return NULL;
 
-       if (!dec)
+       if (!dec || !dec->py_mod)
                return NULL;
 
        gstate = PyGILState_Ensure();