Code

plugin: Reset context on some error conditions.
authorSebastian Harl <sh@tokkee.org>
Tue, 15 Nov 2016 20:30:15 +0000 (21:30 +0100)
committerSebastian Harl <sh@tokkee.org>
Tue, 15 Nov 2016 20:30:15 +0000 (21:30 +0100)
src/core/plugin.c

index e350494979f67c6c69f5183eaa94d02b733b997f..76fc2092d022ff8588a2b5f11739e8653fa5c1c4 100644 (file)
@@ -726,6 +726,7 @@ module_load(const char *basedir, const char *name,
 
        if ((status = module_init(name, lh, &ctx->info))) {
                sdb_object_deref(SDB_OBJ(ctx));
 
        if ((status = module_init(name, lh, &ctx->info))) {
                sdb_object_deref(SDB_OBJ(ctx));
+               ctx_set(NULL);
                return status;
        }
 
                return status;
        }
 
@@ -953,13 +954,13 @@ sdb_plugin_load(const char *basedir, const char *name,
                        ctx_t *old_ctx = ctx_set(ctx);
 
                        status = module_init(ctx->info.plugin_name, ctx->handle, NULL);
                        ctx_t *old_ctx = ctx_set(ctx);
 
                        status = module_init(ctx->info.plugin_name, ctx->handle, NULL);
+                       ctx_set(old_ctx);
                        if (status)
                                return status;
 
                        sdb_log(SDB_LOG_INFO, "core: Successfully reloaded plugin "
                                        "'%s' (%s)", ctx->info.plugin_name,
                                        INFO_GET(&ctx->info, description));
                        if (status)
                                return status;
 
                        sdb_log(SDB_LOG_INFO, "core: Successfully reloaded plugin "
                                        "'%s' (%s)", ctx->info.plugin_name,
                                        INFO_GET(&ctx->info, description));
-                       ctx_set(old_ctx);
                }
                ++ctx->use_cnt;
                return 0;
                }
                ++ctx->use_cnt;
                return 0;