Don't try to load an already-loaded module
authorBert Vermeulen <bert@biot.com>
Mon, 18 Nov 2013 09:44:28 +0000 (10:44 +0100)
committerBert Vermeulen <bert@biot.com>
Mon, 18 Nov 2013 09:44:28 +0000 (10:44 +0100)
Python silently uses the existing module anyway, but the library
was counting it as an extra module. This was exposed by a test
case in the test suite.

decoder.c

index f6032f59b65830a64654a67c98a48d706b88a7bb..e3ffb01288015d19e80b8cdba20fb3bdbd222325 100644 (file)
--- a/decoder.c
+++ b/decoder.c
@@ -260,6 +260,11 @@ SRD_API int srd_decoder_load(const char *module_name)
        if (!module_name)
                return SRD_ERR_ARG;
 
+       if (PyDict_GetItemString(PyImport_GetModuleDict(), module_name)) {
+               /* Module was already imported. */
+               return SRD_OK;
+       }
+
        srd_dbg("Loading protocol decoder '%s'.", module_name);
 
        py_basedec = py_method = py_attr = NULL;