diff options
author | Vladimír Čunát <vladimir.cunat@nic.cz> | 2024-12-20 13:27:41 +0100 |
---|---|---|
committer | Vladimír Čunát <vladimir.cunat@nic.cz> | 2024-12-20 13:27:41 +0100 |
commit | efbb03116feb37736f5dad3cd7d6a80c44b1e478 (patch) | |
tree | dc477efbd0ae5a99e52a7365ac737b9f1b34db1e | |
parent | kr_module_load(): avoid calling deinit() on errors (diff) | |
download | knot-resolver-efbb03116feb37736f5dad3cd7d6a80c44b1e478.tar.xz knot-resolver-efbb03116feb37736f5dad3cd7d6a80c44b1e478.zip |
kr_module_load(): don't pass the_engine in module->data
It was a confusing way of repurposing the field.
My comment from over five years ago (129002fc0d) said that
some external C modules might be relying on this.
But that certainly sounds moot nowadays. To get more confidence,
I rechecked all kr_module::data references (as found by libclang).
-rw-r--r-- | daemon/engine.c | 2 | ||||
-rw-r--r-- | lib/module.c | 4 | ||||
-rw-r--r-- | lib/module.h | 2 |
3 files changed, 2 insertions, 6 deletions
diff --git a/daemon/engine.c b/daemon/engine.c index 509915df..a0da529b 100644 --- a/daemon/engine.c +++ b/daemon/engine.c @@ -741,8 +741,6 @@ int engine_register(const char *name, const char *precedence, const char* ref) if (!module) { return kr_error(ENOMEM); } - module->data = the_engine; /*< some outside modules may still use this value */ - int ret = kr_module_load(module, name, LIBDIR "/kres_modules"); if (ret == 0) { /* We have a C module, loaded and init() was called. diff --git a/lib/module.c b/lib/module.c index 2427c7b6..df9a1f5e 100644 --- a/lib/module.c +++ b/lib/module.c @@ -103,10 +103,8 @@ int kr_module_load(struct kr_module *module, const char *name, const char *path) return kr_error(EINVAL); } - /* Initialize, keep userdata */ - void *data = module->data; + /* Initialize */ memset(module, 0, sizeof(struct kr_module)); - module->data = data; module->name = strdup(name); if (module->name == NULL) { return kr_error(ENOMEM); diff --git a/lib/module.h b/lib/module.h index 507b2df1..4dd5a490 100644 --- a/lib/module.h +++ b/lib/module.h @@ -86,7 +86,7 @@ struct kr_prop { /** * Load a C module instance into memory. And call its init(). * - * @param module module structure. Will be overwritten except for ->data on success. + * @param module module structure. Will be overwritten. * @param name module name * @param path module search path * @return 0 or an error |