]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9821 [mod_lua] Fix. memory/resource leak in mod_lua
authorAlexey Melnichuk <alexeymelnichuck@gmail.com>
Wed, 7 Dec 2016 07:06:48 +0000 (10:06 +0300)
committerAlexey Melnichuk <alexeymelnichuck@gmail.com>
Wed, 7 Dec 2016 18:56:22 +0000 (21:56 +0300)
src/mod/languages/mod_lua/mod_lua.cpp

index 09bfac596d9ba7f680b1b35352523e4031577b8e..8eb68c5a2de6059e3e7dac521e641d35d16b68a1 100644 (file)
@@ -237,9 +237,10 @@ static switch_xml_t lua_fetch(const char *section,
 
        switch_xml_t xml = NULL;
        char *mycmd = NULL;
+       lua_State *L = NULL;
 
        if (!zstr(globals.xml_handler)) {
-               lua_State *L = lua_init();
+               L = lua_init();
                const char *str;
                int error;
 
@@ -285,14 +286,16 @@ static switch_xml_t lua_fetch(const char *section,
                        }
                }
 
-               lua_uninit(L);
-
        }
 
  end:
 
        switch_safe_free(mycmd);
 
+       if (L) {
+               lua_uninit(L);
+       }
+
        return xml;
 }
 
@@ -519,14 +522,13 @@ SWITCH_STANDARD_CHAT_APP(lua_chat_function)
 SWITCH_STANDARD_API(lua_api_function)
 {
 
-       lua_State *L = lua_init();
        char *mycmd;
        int error;
 
        if (zstr(cmd)) {
                stream->write_function(stream, "");
        } else {
-
+               lua_State *L = lua_init();
                mycmd = strdup(cmd);
                switch_assert(mycmd);