Rework constructors/destructors
This commit is contained in:
27
zyklonb.c
27
zyklonb.c
@@ -83,11 +83,10 @@ struct plugin
|
||||
struct str write_buffer; ///< Output yet to be sent out
|
||||
};
|
||||
|
||||
static void
|
||||
plugin_init (struct plugin *self)
|
||||
static struct plugin *
|
||||
plugin_new (void)
|
||||
{
|
||||
memset (self, 0, sizeof *self);
|
||||
|
||||
struct plugin *self = xcalloc (1, sizeof *self);
|
||||
self->pid = -1;
|
||||
self->queued_output = str_make ();
|
||||
|
||||
@@ -95,10 +94,11 @@ plugin_init (struct plugin *self)
|
||||
self->read_buffer = str_make ();
|
||||
self->write_fd = -1;
|
||||
self->write_buffer = str_make ();
|
||||
return self;
|
||||
}
|
||||
|
||||
static void
|
||||
plugin_free (struct plugin *self)
|
||||
plugin_destroy (struct plugin *self)
|
||||
{
|
||||
soft_assert (self->pid == -1);
|
||||
free (self->name);
|
||||
@@ -113,6 +113,8 @@ plugin_free (struct plugin *self)
|
||||
|
||||
if (!self->initialized)
|
||||
str_free (&self->queued_output);
|
||||
|
||||
free (self);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
@@ -192,13 +194,8 @@ bot_context_free (struct bot_context *self)
|
||||
str_free (&self->read_buffer);
|
||||
|
||||
// TODO: terminate the plugins properly before this is called
|
||||
struct plugin *link, *tmp;
|
||||
for (link = self->plugins; link; link = tmp)
|
||||
{
|
||||
tmp = link->next;
|
||||
plugin_free (link);
|
||||
free (link);
|
||||
}
|
||||
LIST_FOR_EACH (struct plugin, link, self->plugins)
|
||||
plugin_destroy (link);
|
||||
|
||||
if (self->irc_fd != -1)
|
||||
{
|
||||
@@ -1099,8 +1096,7 @@ plugin_launch (struct bot_context *ctx, const char *name, struct error **e)
|
||||
xclose (stdin_pipe[0]);
|
||||
xclose (stdout_pipe[1]);
|
||||
|
||||
struct plugin *plugin = xmalloc (sizeof *plugin);
|
||||
plugin_init (plugin);
|
||||
struct plugin *plugin = plugin_new ();
|
||||
plugin->ctx = ctx;
|
||||
plugin->pid = pid;
|
||||
plugin->name = xstrdup (name);
|
||||
@@ -1876,8 +1872,7 @@ on_plugin_death (struct plugin *plugin, int status)
|
||||
plugin->read_fd = -1;
|
||||
|
||||
LIST_UNLINK (ctx->plugins, plugin);
|
||||
plugin_free (plugin);
|
||||
free (plugin);
|
||||
plugin_destroy (plugin);
|
||||
|
||||
// Living child processes block us from quitting
|
||||
try_finish_quit (ctx);
|
||||
|
||||
Reference in New Issue
Block a user