src/nexus.c
changeset 105 b6b183fbf373
parent 103 454aea1e4f11
child 106 f00661136ac2
--- a/src/nexus.c	Wed Apr 01 00:38:16 2009 +0300
+++ b/src/nexus.c	Wed Apr 01 00:57:34 2009 +0300
@@ -272,19 +272,25 @@
     struct console_config config = {
         .prompt     = "> ",
     };
+    struct console *console;
 
     log_info("initializing the console");
     
     // init the console
-    if (console_init(&nexus->console, nexus->ev_base, &config, NULL, NULL, err))
+    if (console_init(&console, nexus->ev_base, &config, NULL, NULL, err))
         return ERROR_CODE(err);
 
     // create the lua console on top of that
-    if (lua_console_create(&nexus->lua_console, nexus->console, nexus, err))
-        return ERROR_CODE(err);
+    if (lua_console_create(&nexus->lua_console, console, nexus->lua, err))
+        goto error;
 
     // ok
     return SUCCESS;
+
+error:
+    console_destroy(console);
+
+    return ERROR_CODE(err);
 }
 
 /**
@@ -381,6 +387,10 @@
 
 void nexus_destroy (struct nexus *nexus)
 {
+    // destroy the lua state
+    if (nexus->lua)
+        nexus_lua_destroy(nexus->lua);
+
     // destroy the modules
     if (nexus->modules)
         modules_destroy(nexus->modules);
@@ -447,8 +457,12 @@
     // the IRC client
     if (irc_client_create(&nexus->client, &err))
         FATAL_ERROR(&err, "irc_client_create");
+    
+    // lua state
+    if (nexus_lua_create(&nexus->lua, nexus, &err))
+        FATAL_ERROR(&err, "nexus_lua_create");
 
-
+    
     // parse args
     if (parse_args(nexus, argc, argv, &err))
         FATAL_ERROR(&err, "parse_args");